Deferred+ template
This commit is contained in:
parent
140e69fde8
commit
29f8a2536a
|
@ -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 ''
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
Loading…
Reference in a new issue