Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_node/node_edit.c
| Show First 20 Lines • Show All 377 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| return STREQ(snode->tree_idname, ntreeType_Texture->idname); | return STREQ(snode->tree_idname, ntreeType_Texture->idname); | ||||
| } | } | ||||
| /* assumes nothing being done in ntree yet, sets the default in/out node */ | /* assumes nothing being done in ntree yet, sets the default in/out node */ | ||||
| /* called from shading buttons or header */ | /* called from shading buttons or header */ | ||||
| void ED_node_shader_default(const bContext *C, ID *id) | void ED_node_shader_default(const bContext *C, ID *id) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | ViewRender *view_render = CTX_data_view_render(C); | ||||
| bNode *in, *out; | bNode *in, *out; | ||||
| bNodeSocket *fromsock, *tosock, *sock; | bNodeSocket *fromsock, *tosock, *sock; | ||||
| bNodeTree *ntree; | bNodeTree *ntree; | ||||
| int output_type, shader_type; | int output_type, shader_type; | ||||
| float color[4] = { 0.0f, 0.0f, 0.0f, 1.0f }, strength = 1.0f; | float color[4] = { 0.0f, 0.0f, 0.0f, 1.0f }, strength = 1.0f; | ||||
| ntree = ntreeAddTree(NULL, "Shader Nodetree", ntreeType_Shader->idname); | ntree = ntreeAddTree(NULL, "Shader Nodetree", ntreeType_Shader->idname); | ||||
| switch (GS(id->name)) { | switch (GS(id->name)) { | ||||
| case ID_MA: | case ID_MA: | ||||
| { | { | ||||
| Material *ma = (Material *)id; | Material *ma = (Material *)id; | ||||
| ma->nodetree = ntree; | ma->nodetree = ntree; | ||||
| if (BKE_scene_uses_blender_eevee(scene)) { | if (BKE_viewrender_uses_blender_eevee(view_render)) { | ||||
| output_type = SH_NODE_OUTPUT_MATERIAL; | output_type = SH_NODE_OUTPUT_MATERIAL; | ||||
| shader_type = SH_NODE_BSDF_PRINCIPLED; | shader_type = SH_NODE_BSDF_PRINCIPLED; | ||||
| } | } | ||||
| else if (BKE_scene_use_new_shading_nodes(scene)) { | else if (BKE_viewrender_use_new_shading_nodes(view_render)) { | ||||
| output_type = SH_NODE_OUTPUT_MATERIAL; | output_type = SH_NODE_OUTPUT_MATERIAL; | ||||
| shader_type = SH_NODE_BSDF_DIFFUSE; | shader_type = SH_NODE_BSDF_DIFFUSE; | ||||
| } | } | ||||
| else { | else { | ||||
| output_type = SH_NODE_OUTPUT; | output_type = SH_NODE_OUTPUT; | ||||
| shader_type = SH_NODE_MATERIAL; | shader_type = SH_NODE_MATERIAL; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | void ED_node_shader_default(const bContext *C, ID *id) | ||||
| nodeSetActive(ntree, in); | nodeSetActive(ntree, in); | ||||
| /* only a link from color to color */ | /* only a link from color to color */ | ||||
| fromsock = in->outputs.first; | fromsock = in->outputs.first; | ||||
| tosock = out->inputs.first; | tosock = out->inputs.first; | ||||
| nodeAddLink(ntree, in, fromsock, out, tosock); | nodeAddLink(ntree, in, fromsock, out, tosock); | ||||
| /* default values */ | /* default values */ | ||||
| if (BKE_scene_use_new_shading_nodes(scene)) { | if (BKE_viewrender_use_new_shading_nodes(view_render)) { | ||||
| PointerRNA sockptr; | PointerRNA sockptr; | ||||
| sock = in->inputs.first; | sock = in->inputs.first; | ||||
| RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &sockptr); | RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &sockptr); | ||||
| RNA_float_set_array(&sockptr, "default_value", color); | RNA_float_set_array(&sockptr, "default_value", color); | ||||
| if (strength != 0.0f) { | if (strength != 0.0f) { | ||||
| sock = in->inputs.last; | sock = in->inputs.last; | ||||
| ▲ Show 20 Lines • Show All 1,876 Lines • ▼ Show 20 Lines | void NODE_OT_tree_socket_move(wmOperatorType *ot) | ||||
| RNA_def_enum(ot->srna, "direction", move_direction_items, 1, "Direction", ""); | RNA_def_enum(ot->srna, "direction", move_direction_items, 1, "Direction", ""); | ||||
| } | } | ||||
| /* ********************** Shader Script Update ******************/ | /* ********************** Shader Script Update ******************/ | ||||
| static int node_shader_script_update_poll(bContext *C) | static int node_shader_script_update_poll(bContext *C) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| RenderEngineType *type = RE_engines_find(scene->r.engine); | RenderEngineType *type = RE_engines_find(scene->view_render.engine_id); | ||||
| SpaceNode *snode = CTX_wm_space_node(C); | SpaceNode *snode = CTX_wm_space_node(C); | ||||
| bNode *node; | bNode *node; | ||||
| Text *text; | Text *text; | ||||
| /* test if we have a render engine that supports shaders scripts */ | /* test if we have a render engine that supports shaders scripts */ | ||||
| if (!(type && type->update_script_node)) | if (!(type && type->update_script_node)) | ||||
| return 0; | return 0; | ||||
| ▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | static int node_shader_script_update_exec(bContext *C, wmOperator *op) | ||||
| PointerRNA nodeptr = CTX_data_pointer_get_type(C, "node", &RNA_ShaderNodeScript); | PointerRNA nodeptr = CTX_data_pointer_get_type(C, "node", &RNA_ShaderNodeScript); | ||||
| bNodeTree *ntree_base = NULL; | bNodeTree *ntree_base = NULL; | ||||
| bNode *node = NULL; | bNode *node = NULL; | ||||
| RenderEngine *engine; | RenderEngine *engine; | ||||
| RenderEngineType *type; | RenderEngineType *type; | ||||
| bool found = false; | bool found = false; | ||||
| /* setup render engine */ | /* setup render engine */ | ||||
| type = RE_engines_find(scene->r.engine); | type = RE_engines_find(scene->view_render.engine_id); | ||||
| engine = RE_engine_create(type); | engine = RE_engine_create(type); | ||||
| engine->reports = op->reports; | engine->reports = op->reports; | ||||
| /* get node */ | /* get node */ | ||||
| if (nodeptr.data) { | if (nodeptr.data) { | ||||
| ntree_base = nodeptr.id.data; | ntree_base = nodeptr.id.data; | ||||
| node = nodeptr.data; | node = nodeptr.data; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 175 Lines • Show Last 20 Lines | |||||