Deferred+ template

This commit is contained in:
Lubos Lenco 2017-03-23 13:18:13 +01:00
parent 140e69fde8
commit 29f8a2536a
6 changed files with 49 additions and 1 deletions

View file

@ -17,12 +17,18 @@ def make_renderer(cam):
nodes = group.nodes
links = group.links
make_forward(cam)
else: # Deferred
elif cam.rp_renderer == 'Deferred':
load_library('deferred_path', 'armory_default')
group = bpy.data.node_groups['armory_default']
nodes = group.nodes
links = group.links
make_deferred(cam)
elif cam.rp_renderer == 'Deferred Plus':
load_library('deferred_plus_path', 'armory_default')
group = bpy.data.node_groups['armory_default']
nodes = group.nodes
links = group.links
make_deferred_plus(cam)
def relink(start_node, next_node):
if len(nodes[start_node].inputs[0].links) > 0:
@ -155,6 +161,9 @@ def make_deferred(cam):
links.remove(l)
links.new(nodes['Framebuffer'].outputs[0], nodes['Draw Compositor'].inputs[1])
def make_deferred_plus(cam):
pass
# Handling node data
def check_default():
if (bpy.data.node_groups.get('armory_default') == None or bpy.data.filepath == '') and len(bpy.data.cameras) > 0: # Old RP nodes can be saved in startup file, reload those when fp is ''

View file

@ -16,6 +16,8 @@ def make(context_id, rid):
make_forward(con_mesh)
elif rid == 'deferred':
make_deferred(con_mesh)
elif rid == 'deferred_plus':
make_deferred_plus(con_mesh)
make_finalize(con_mesh)
@ -227,6 +229,39 @@ def make_deferred(con_mesh):
return con_mesh
def make_deferred_plus(con_mesh):
wrd = bpy.data.worlds['Arm']
vert = con_mesh.make_vert()
frag = con_mesh.make_frag()
frag.add_out('vec4[2] fragColor')
vert.add_uniform('mat3 N', '_normalMatrix')
vert.write_main_header('vec4 spos = vec4(pos, 1.0);')
frag.ins = vert.outs
vert.add_uniform('mat4 WVP', '_worldViewProjectionMatrix')
vert.write('gl_Position = WVP * spos;')
frag.add_include('../../Shaders/compiled.glsl')
if mat_state.data.is_elem('tex'):
vert.add_out('vec2 texCoord')
vert.write('texCoord = tex;')
vert.add_out('vec3 wnormal')
write_norpos(vert)
frag.write_pre = True
frag.write_main_header('vec3 n = normalize(wnormal);')
frag.write_pre = False
# Pack gbuffer
frag.add_include('../../Shaders/std/gbuffer.glsl')
frag.write('n /= (abs(n.x) + abs(n.y) + abs(n.z));')
frag.write('n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);')
frag.write('fragColor[0] = vec4(n.x, n.y, 0.0, 0.0);')
frag.write('fragColor[1] = vec4(0.0, 0.0, 0.0, 0.0);')
def make_forward(con_mesh):
make_forward_base(con_mesh)

View file

@ -277,6 +277,7 @@ def init_properties():
('Deferred Low', 'Deferred Low', 'Deferred Low'),
('Deferred', 'Deferred', 'Deferred'),
('Deferred High', 'Deferred High', 'Deferred High'),
('Deferred Plus', 'Deferred Plus', 'Deferred Plus'),
('VR Low', 'VR Low', 'VR Low'),
#('Grease Pencil', 'Grease Pencil', 'Grease Pencil'),
#('Path-Trace', 'Path-Trace', 'Path-Trace')],
@ -285,6 +286,7 @@ def init_properties():
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)

View file

@ -136,6 +136,8 @@ def set_preset(self, context, preset):
cam.rp_ssr = True
cam.rp_bloom = True
cam.rp_motionblur = 'None'
elif preset == 'Deferred Plus':
pass
elif preset == 'VR Low':
cam.rp_renderer = 'Forward'
cam.rp_shadowmap = '1024'

Binary file not shown.

Binary file not shown.