Fix TAA for envmap

This commit is contained in:
Lubos Lenco 2017-08-08 11:14:01 +02:00
parent 68f2b24738
commit feac62cc10
8 changed files with 27 additions and 23 deletions

View file

@ -189,6 +189,9 @@ def make_deferred(cam):
links.new(nodes['Reroute.019'].outputs[0], nodes['SMAA'].inputs[5])
links.new(nodes['gbuffer2'].outputs[0], nodes['GBuffer'].inputs[2])
links.new(nodes['Reroute.014'].outputs[0], nodes['SMAA'].inputs[1])
# Clear velocity
links.new(nodes['Begin'].outputs[0], nodes['Set Target Veloc'].inputs[0])
links.new(nodes['Clear Target Veloc'].outputs[0], nodes['Set Target Mesh'].inputs[0])
elif cam.rp_antialiasing == 'FXAA':
last_node = 'FXAA'
relink('SMAA', 'FXAA')

View file

@ -22,7 +22,7 @@ def build_node_trees(assets_path):
os.makedirs(arm.utils.build_dir() + '/compiled/Assets/renderpaths')
build_node_trees.assets_path = assets_path
if bpy.data.cameras[0].rp_materials == 'Full':
if bpy.data.worlds['Arm'].material_model != 'Restricted':
# Always include
assets.add(assets_path + 'brdf.png')
assets.add_embedded_data('brdf.png')

View file

@ -76,7 +76,7 @@ def build_node_tree(world):
wrd.world_defs += '_TwoSidedAreaLamp'
# Alternative models
if wrd.lighting_model == 'Cycles':
if wrd.material_model == 'Cycles':
wrd.world_defs += '_Cycles'
# TODO: Lamp texture test..

View file

@ -16,7 +16,7 @@ def make(context_id, rid):
con_mesh = mat_state.data.add_context({ 'name': context_id, 'depth_write': True, 'compare_mode': 'less', 'cull_mode': 'clockwise' })
if rid == 'forward':
if bpy.data.cameras[0].rp_materials == 'Full':
if bpy.data.worlds['Arm'].material_model != 'Restricted':
make_forward(con_mesh)
else:
make_forward_restricted(con_mesh)

View file

@ -137,7 +137,7 @@ def make(context_id):
frag.write('vec3 color = basecol * visibility * lightColor * dotNL * attenuate(distance(wposition * voxelgiDimensions, lightPos));')
frag.write('vec3 voxel = wposition * 0.5 + vec3(0.5);')
if wrd.lighting_model == 'Cycles':
if wrd.material_model == 'Cycles':
frag.write('color = min(color * 0.9, vec3(0.9)) + min(color / 200.0, 0.1);') # Higher range to allow emission
# if bpy.data.cameras[0].rp_voxelgi_hdr:

View file

@ -26,6 +26,10 @@ def update_preset(self, context):
def update_renderpath(self, context):
props_renderer.set_renderpath(self, context)
def update_material_model(self, context):
assets.invalidate_shader_cache(self, context)
update_renderpath(self, context)
def update_translucency_state(self, context):
if self.rp_translucency_state == 'On':
self.rp_translucency = True
@ -325,21 +329,14 @@ def init_properties():
('Max', 'Max', 'Max'),
('Render Capture', 'Render Capture', 'Render Capture'),
('Grease Pencil', 'Grease Pencil', 'Grease Pencil'),
#('Path-Trace', 'Path-Trace', 'Path-Trace')],
],
name="Preset", description="Render path preset", default='Deferred', update=update_preset)
bpy.types.Camera.rp_renderer = EnumProperty(
items=[('Forward', 'Forward', 'Forward'),
('Deferred', 'Deferred', 'Deferred'),
('Deferred Plus', 'Deferred Plus', 'Deferred Plus'),
#('Path-Trace', 'Path-Trace', 'Path-Trace')],
],
name="Renderer", description="Renderer type", default='Deferred', update=update_renderpath)
bpy.types.Camera.rp_materials = EnumProperty(
items=[('Full', 'Full', 'Full'),
('Restricted', 'Restricted', 'Restricted'),
],
name="Materials", description="Material builder", default='Full', update=update_renderpath)
bpy.types.Camera.rp_depthprepass = bpy.props.BoolProperty(name="Depth Prepass", description="Depth Prepass for mesh context", default=False, update=update_renderpath)
bpy.types.Camera.rp_meshes = bpy.props.BoolProperty(name="Meshes", description="Render mesh objects", default=True, update=update_renderpath)
bpy.types.Camera.rp_hdr = bpy.props.BoolProperty(name="HDR", description="Render in HDR Space", default=True, update=update_renderpath)
@ -542,11 +539,13 @@ def init_properties():
bpy.types.World.force_no_culling = bpy.props.BoolProperty(name="Force No Culling", default=False)
bpy.types.World.generate_two_sided_area_lamp = bpy.props.BoolProperty(name="Two-Sided Area Lamps", description="Emit light from both faces of area lamp", default=False, update=assets.invalidate_shader_cache)
bpy.types.World.tessellation_enabled = bpy.props.BoolProperty(name="Tessellation", description="Enable tessellation for height maps on supported targets", default=True, update=assets.invalidate_shader_cache)
# Lighting flags
bpy.types.World.lighting_model = EnumProperty(
# Material builder flags
bpy.types.World.material_model = EnumProperty(
items=[('PBR', 'PBR', 'PBR'),
('Cycles', 'Cycles', 'Cycles')],
name="Lighting", description="Preferred lighting calibration", default='PBR', update=assets.invalidate_shader_cache)
('Cycles', 'Cycles', 'Cycles'),
('Restricted', 'Restricted', 'Restricted'),
],
name="Materials", description="Material builder", default='PBR', update=update_material_model)
# For material
bpy.types.NodeSocket.is_uniform = bpy.props.BoolProperty(name="Is Uniform", description="Mark node sockets to be processed as material uniforms", default=False)
bpy.types.NodeTree.is_cached = bpy.props.BoolProperty(name="Node Tree Cached", description="No need to reexport node tree", default=False)

View file

@ -20,7 +20,7 @@ def set_preset(self, context, preset):
if preset == 'Low':
cam.rp_renderer = 'Forward'
cam.rp_materials = 'Full'
wrd.material_model = 'PBR'
cam.rp_shadowmap = '1024'
cam.rp_meshes = True
cam.rp_translucency_state = 'Off'
@ -48,7 +48,7 @@ def set_preset(self, context, preset):
cam.rp_motionblur = 'None'
elif preset == 'Forward':
cam.rp_renderer = 'Forward'
cam.rp_materials = 'Full'
wrd.material_model = 'PBR'
cam.rp_shadowmap = '2048'
cam.rp_meshes = True
cam.rp_translucency_state = 'Auto'
@ -76,6 +76,7 @@ def set_preset(self, context, preset):
cam.rp_motionblur = 'None'
elif preset == 'Deferred':
cam.rp_renderer = 'Deferred'
wrd.material_model = 'PBR'
cam.rp_shadowmap = '2048'
cam.rp_meshes = True
cam.rp_translucency_state = 'Auto'
@ -103,6 +104,7 @@ def set_preset(self, context, preset):
cam.rp_motionblur = 'None'
elif preset == 'Max':
cam.rp_renderer = 'Deferred'
wrd.material_model = 'PBR'
cam.rp_shadowmap = '4096'
cam.rp_meshes = True
cam.rp_translucency_state = 'Auto'
@ -157,10 +159,11 @@ def set_preset(self, context, preset):
cam.rp_rendercapture = True
cam.rp_rendercapture_format = '8bit'
cam.rp_motionblur = 'None'
wrd.lighting_model = 'Cycles'
wrd.material_model = 'Cycles'
wrd.generate_pcss_state = 'On'
elif preset == 'Deferred Plus':
cam.rp_renderer = 'Deferred Plus'
wrd.material_model = 'PBR'
cam.rp_shadowmap = '4096'
cam.rp_meshes = True
cam.rp_translucency_state = 'Auto'
@ -188,7 +191,7 @@ def set_preset(self, context, preset):
cam.rp_motionblur = 'None'
elif preset == 'VR Low':
cam.rp_renderer = 'Forward'
cam.rp_materials = 'Restricted'
wrd.material_model = 'Restricted'
cam.rp_shadowmap = '1024'
cam.rp_meshes = True
cam.rp_translucency_state = 'Off'
@ -216,7 +219,7 @@ def set_preset(self, context, preset):
cam.rp_motionblur = 'None'
elif preset == 'Mobile Low':
cam.rp_renderer = 'Forward'
cam.rp_materials = 'Restricted'
wrd.material_model = 'Restricted'
cam.rp_shadowmap = '1024'
cam.rp_meshes = True
cam.rp_translucency_state = 'Off'
@ -244,7 +247,7 @@ def set_preset(self, context, preset):
cam.rp_motionblur = 'None'
elif preset == 'Grease Pencil':
cam.rp_renderer = 'Forward'
cam.rp_materials = 'Restricted'
wrd.material_model = 'Restricted'
cam.rp_shadowmap = 'None'
cam.rp_meshes = False
cam.rp_translucency_state = 'Off'
@ -305,8 +308,7 @@ class GenRPDataPropsPanel(bpy.types.Panel):
layout.prop(dat, "rp_preset")
layout.separator()
layout.prop(dat, "rp_renderer")
layout.prop(dat, "rp_materials")
layout.prop(wrd, 'lighting_model')
layout.prop(wrd, 'material_model')
layout.prop(dat, "rp_shadowmap")
layout.prop(dat, "rp_meshes")
layout.prop(dat, "rp_translucency_state")

Binary file not shown.