Generate forward pipeline nodes
This commit is contained in:
parent
6a7d93ce04
commit
e8d7f7d6e4
|
@ -15,7 +15,7 @@ vec2 envMapEquirect(vec3 wcNormal, float flipEnvMap) {
|
|||
return vec2(theta / TwoPI, phi / PI);
|
||||
}
|
||||
|
||||
void kore() {
|
||||
void main() {
|
||||
|
||||
vec3 N = normalize(wcNormal);
|
||||
gl_FragColor = texture2D(envmap, envMapEquirect(N, -1.0));
|
||||
|
|
|
@ -56,7 +56,7 @@ mat3 transpose(mat3 m) {
|
|||
m[0][2], m[1][2], m[2][2]);
|
||||
}
|
||||
|
||||
void kore() {
|
||||
void main() {
|
||||
|
||||
mat4 invP = inverse(P);
|
||||
mat3 invMV = transpose(mat3(V));
|
||||
|
|
|
@ -170,15 +170,44 @@ node_categories = [
|
|||
]),
|
||||
]
|
||||
|
||||
def reset_pipelines():
|
||||
if bpy.data.node_groups.get('forward_pipeline') == None:
|
||||
make_forward_pipeline()
|
||||
|
||||
def make_forward_pipeline():
|
||||
step = 170
|
||||
pipe = bpy.data.node_groups.new(name='forward_pipeline', type='CGPipelineTreeType')
|
||||
nodes = pipe.nodes
|
||||
links = pipe.links
|
||||
|
||||
framebuffer_node = nodes.new('FramebufferNodeType')
|
||||
framebuffer_node.location = 0, 0
|
||||
|
||||
settarget_node = nodes.new('SetTargetNodeType')
|
||||
settarget_node.location = step * 1, 0
|
||||
links.new(framebuffer_node.outputs[0], settarget_node.inputs[1])
|
||||
|
||||
cleartarget_node = nodes.new('ClearTargetNodeType')
|
||||
cleartarget_node.location = step * 2, 0
|
||||
cleartarget_node.inputs[1].default_value = True # Color
|
||||
cleartarget_node.inputs[2].default_value = True # Depth
|
||||
links.new(settarget_node.outputs[0], cleartarget_node.inputs[0])
|
||||
|
||||
drawgeometry_node = nodes.new('DrawGeometryNodeType')
|
||||
drawgeometry_node.location = step * 3, 0
|
||||
drawgeometry_node.inputs[1].default_value = 'forward' # Context
|
||||
links.new(cleartarget_node.outputs[0], drawgeometry_node.inputs[0])
|
||||
|
||||
def register():
|
||||
bpy.utils.register_module(__name__)
|
||||
try:
|
||||
nodeitems_utils.register_node_categories("CG_PIELINE_PNODES", node_categories)
|
||||
nodeitems_utils.register_node_categories("CG_PIPELINE_NODES", node_categories)
|
||||
reset_pipelines()
|
||||
except:
|
||||
pass
|
||||
|
||||
def unregister():
|
||||
nodeitems_utils.unregister_node_categories("CG_PIELINE_PNODES")
|
||||
nodeitems_utils.unregister_node_categories("CG_PIPELINE_NODES")
|
||||
bpy.utils.unregister_module(__name__)
|
||||
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ import shutil
|
|||
import bpy
|
||||
import os
|
||||
import json
|
||||
import pipeline_nodes
|
||||
from bpy.types import Menu, Panel, UIList
|
||||
from bpy.props import *
|
||||
|
||||
|
@ -21,7 +22,7 @@ def initProperties():
|
|||
# For camera
|
||||
bpy.types.Camera.frustum_culling = bpy.props.BoolProperty(name="Frustum Culling", default=False)
|
||||
bpy.types.Camera.sort_front_to_back = bpy.props.BoolProperty(name="Sort Front to Back", default=False)
|
||||
bpy.types.Camera.pipeline_path = bpy.props.StringProperty(name="Pipeline Path", default="pipeline_resource/forward_pipeline")
|
||||
bpy.types.Camera.pipeline_path = bpy.props.StringProperty(name="Pipeline Path", default="forward_pipeline")
|
||||
bpy.types.Camera.pipeline_pass = bpy.props.StringProperty(name="Pipeline Pass", default="forward")
|
||||
# For material
|
||||
bpy.types.Material.receive_shadow = bpy.props.BoolProperty(name="Receive Shadow", default=True)
|
||||
|
@ -63,9 +64,19 @@ class DataPropsPanel(bpy.types.Panel):
|
|||
layout.prop(obj.data, 'sort_front_to_back')
|
||||
layout.prop_search(obj.data, "pipeline_path", bpy.data, "node_groups")
|
||||
layout.prop(obj.data, 'pipeline_pass')
|
||||
layout.operator("cg.reset_pipelines")
|
||||
elif obj.type == 'MESH':
|
||||
layout.prop(obj.data, 'static_usage')
|
||||
|
||||
# Reset pipelines
|
||||
class OBJECT_OT_RESETPIPELINESButton(bpy.types.Operator):
|
||||
bl_idname = "cg.reset_pipelines"
|
||||
bl_label = "Reset Pipelines"
|
||||
|
||||
def execute(self, context):
|
||||
pipeline_nodes.reset_pipelines()
|
||||
return{'FINISHED'}
|
||||
|
||||
# Menu in materials region
|
||||
class MatsPropsPanel(bpy.types.Panel):
|
||||
bl_label = "Cycles Props"
|
||||
|
@ -83,6 +94,7 @@ class MatsPropsPanel(bpy.types.Panel):
|
|||
if mat.custom_shader:
|
||||
layout.prop(mat, 'custom_shader_name')
|
||||
|
||||
|
||||
# Registration
|
||||
def register():
|
||||
bpy.utils.register_module(__name__)
|
||||
|
|
Loading…
Reference in a new issue