Detect voxel support

This commit is contained in:
Lubos Lenco 2017-12-05 23:06:24 +01:00
parent 8a0c0e40cf
commit f056c35903
4 changed files with 30 additions and 21 deletions

View file

@ -280,9 +280,7 @@ def build_project(is_play=False, is_publish=False, is_render=False, is_render_an
state.is_render = is_render
state.is_render_anim = is_render_anim
state.is_publish = is_publish
# Clear flag
state.in_viewport = False
state.in_viewport = in_viewport
# Save blend
if arm.utils.get_save_on_build() and not state.krom_running:
@ -426,7 +424,6 @@ def play_project(in_viewport, is_render=False, is_render_anim=False):
# Build data
build_project(is_play=True, is_render=is_render, is_render_anim=is_render_anim, in_viewport=in_viewport)
state.in_viewport = in_viewport
khajs_path = get_khajs_path(in_viewport, state.target)
if not wrd.arm_cache_compiler or \

View file

@ -2,6 +2,7 @@ import bpy
import arm.assets as assets
import arm.utils
import arm.log as log
import arm.make_state as state
def build():
assets_path = arm.utils.get_sdk_path() + 'armory/Assets/'
@ -107,17 +108,24 @@ def build():
assets.add(assets_path + 'vr.png')
assets.add_embedded_data('vr.png')
assets.add_khafile_def('rp_gi={0}'.format(rpdat.rp_gi))
rp_gi = rpdat.rp_gi
has_voxels = state.in_viewport == False or bpy.app.version >= (2, 80, 1)
if not has_voxels:
rp_gi = 'Off'
assets.add_khafile_def('rp_gi={0}'.format(rp_gi))
if rpdat.rp_gi != 'Off':
assets.add_khafile_def('rp_gi={0}'.format(rpdat.rp_gi))
assets.add_khafile_def('rp_voxelgi_resolution={0}'.format(rpdat.rp_voxelgi_resolution))
assets.add_khafile_def('rp_voxelgi_resolution_z={0}'.format(rpdat.rp_voxelgi_resolution_z))
if rpdat.rp_voxelgi_hdr:
assets.add_khafile_def('rp_voxelgi_hdr')
if rpdat.arm_voxelgi_shadows:
assets.add_khafile_def('rp_voxelgi_shadows')
if rpdat.arm_voxelgi_refraction:
assets.add_khafile_def('rp_voxelgi_refraction')
if has_voxels:
assets.add_khafile_def('rp_gi={0}'.format(rpdat.rp_gi))
assets.add_khafile_def('rp_voxelgi_resolution={0}'.format(rpdat.rp_voxelgi_resolution))
assets.add_khafile_def('rp_voxelgi_resolution_z={0}'.format(rpdat.rp_voxelgi_resolution_z))
if rpdat.rp_voxelgi_hdr:
assets.add_khafile_def('rp_voxelgi_hdr')
if rpdat.arm_voxelgi_shadows:
assets.add_khafile_def('rp_voxelgi_shadows')
if rpdat.arm_voxelgi_refraction:
assets.add_khafile_def('rp_voxelgi_refraction')
else:
log.warn('Disabling Voxel GI - Blender 2.8 is required for voxels in viewport')
if rpdat.arm_rp_resolution != 'Display':
assets.add_khafile_def('rp_resolution={0}'.format(rpdat.arm_rp_resolution))
@ -201,4 +209,4 @@ def build():
if rpdat.arm_soft_shadows_penumbra != 1:
wrd.world_defs += '_PenumbraScale'
else:
log.warn('To enable soft shadows set "Armory Render Path - Cascades" to 1 for now')
log.warn('Disabling soft shadows - "Armory Render Path - Cascades" requires to be set to 1 for now')

View file

@ -8,6 +8,7 @@ import arm.assets as assets
import arm.utils
import arm.node_utils as node_utils
import arm.log as log
import arm.make_state as state
def build(active_worlds):
fp = arm.utils.get_fp()
@ -118,10 +119,12 @@ def build_node_tree(world):
wrd.world_defs += '_NoShadows'
assets.add_khafile_def('arm_no_shadows')
# GI
if rpdat.rp_gi == 'Voxel GI':
voxelgi = True
elif rpdat.rp_gi == 'Voxel AO':
voxelao = True
has_voxels = state.in_viewport == False or bpy.app.version >= (2, 80, 1)
if has_voxels:
if rpdat.rp_gi == 'Voxel GI':
voxelgi = True
elif rpdat.rp_gi == 'Voxel AO':
voxelao = True
# SS
# if rpdat.rp_dfrs:
# wrd.world_defs += '_DFRS'

View file

@ -24,7 +24,8 @@ def get_rpasses(material):
ar = []
rpdat = arm.utils.get_rp()
vgirefract = rpdat.rp_gi == 'Voxel GI' and rpdat.arm_voxelgi_refraction
has_voxels = make_state.in_viewport == False or bpy.app.version >= (2, 80, 1)
vgirefract = rpdat.rp_gi == 'Voxel GI' and rpdat.arm_voxelgi_refraction and has_voxels
if material.arm_decal:
ar.append('decal')
@ -36,7 +37,7 @@ def get_rpasses(material):
ar.append('mesh')
for con in add_mesh_contexts:
ar.append(con)
if rpdat.rp_gi == 'Voxel GI' or rpdat.rp_gi == 'Voxel AO':
if (rpdat.rp_gi == 'Voxel GI' or rpdat.rp_gi == 'Voxel AO') and has_voxels:
ar.append('voxel')
if rpdat.rp_renderer == 'Deferred Plus':
ar.append('rect')