[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37479] branches/cycles: Cycles: more work on texturing UI, now texture nodes use same nodes as shading,
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Jun 14 18:05:22 CEST 2011
Revision: 37479
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37479
Author: blendix
Date: 2011-06-14 16:05:21 +0000 (Tue, 14 Jun 2011)
Log Message:
-----------
Cycles: more work on texturing UI, now texture nodes use same nodes as shading,
only rough implementation for design proposal.
Modified Paths:
--------------
branches/cycles/intern/cycles/blender/addon/ui.py
branches/cycles/release/scripts/startup/bl_ui/properties_texture.py
branches/cycles/source/blender/blenkernel/BKE_node.h
branches/cycles/source/blender/blenkernel/intern/node.c
branches/cycles/source/blender/editors/interface/interface_node.c
branches/cycles/source/blender/editors/render/render_shading.c
branches/cycles/source/blender/editors/space_node/node_draw.c
branches/cycles/source/blender/editors/space_node/node_edit.c
branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h
branches/cycles/source/blender/nodes/CMakeLists.txt
branches/cycles/source/blender/nodes/SHD_node.h
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_add_closure.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_attribute.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_background.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_anisotropic.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_diffuse.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_glass.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_glossy.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_translucent.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_transparent.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_bsdf_velvet.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_emission.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_fresnel.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_geometry.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_light_path.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_mix_closure.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_output_lamp.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_output_material.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_output_world.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_blend.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_clouds.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_coord.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_distnoise.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_environment.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_image.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_magic.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_marble.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_musgrave.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_noise.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_sky.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_stucci.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_voronoi.c
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_tex_wood.c
branches/cycles/source/blender/nodes/intern/SHD_util.c
branches/cycles/source/blender/nodes/intern/SHD_util.h
branches/cycles/source/blender/nodes/intern/TEX_util.c
branches/cycles/source/blender/render/intern/source/render_texture.c
Added Paths:
-----------
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_noise.h
branches/cycles/source/blender/nodes/intern/SHD_nodes/SHD_output_texture.c
Modified: branches/cycles/intern/cycles/blender/addon/ui.py
===================================================================
--- branches/cycles/intern/cycles/blender/addon/ui.py 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/intern/cycles/blender/addon/ui.py 2011-06-14 16:05:21 UTC (rev 37479)
@@ -369,11 +369,59 @@
col.template_ID(space, "pin_id")
elif user:
col.template_ID(user, "texture", new="texture.new")
+
+ if tex:
+ row = split.row()
+ row.prop(tex, "use_nodes", icon="NODETREE", text="")
+ row.label()
- if tex:
- split = layout.split(percentage=0.2)
- split.label(text="Type:")
- split.prop(tex, "type", text="")
+ if not tex.use_nodes:
+ split = layout.split(percentage=0.2)
+ split.label(text="Type:")
+ split.prop(tex, "type", text="")
+
+class CyclesTexture_PT_nodes(CyclesButtonsPanel, bpy.types.Panel):
+ bl_label = "Nodes"
+ bl_context = "texture"
+
+ @classmethod
+ def poll(cls, context):
+ tex = context.texture
+ return (tex and tex.use_nodes) and CyclesButtonsPanel.poll(context)
+
+ def draw(self, context):
+ layout = self.layout
+
+ tex = context.texture
+ panel_node_draw(layout, tex, 'OUTPUT_TEXTURE', 'Color')
+
+class CyclesTexture_PT_mapping(CyclesButtonsPanel, bpy.types.Panel):
+ bl_label = "Mapping"
+ bl_context = "texture"
+
+ @classmethod
+ def poll(cls, context):
+ tex = context.texture
+ return (tex and tex.use_nodes) and CyclesButtonsPanel.poll(context)
+
+ def draw(self, context):
+ layout = self.layout
+ layout.label("Texture coordinate mapping goes here.");
+ layout.label("Translate, rotate, scale, projection, XYZ.")
+
+class CyclesTexture_PT_color(CyclesButtonsPanel, bpy.types.Panel):
+ bl_label = "Color"
+ bl_context = "texture"
+
+ @classmethod
+ def poll(cls, context):
+ tex = context.texture
+ return (tex and tex.use_nodes) and CyclesButtonsPanel.poll(context)
+
+ def draw(self, context):
+ layout = self.layout
+ layout.label("Color modification options go here.");
+ layout.label("Ramp, brightness, contrast, saturation.")
def draw_device(self, context):
scene = context.scene
@@ -421,8 +469,7 @@
bpy.types.TEXTURE_PT_distortednoise,
bpy.types.TEXTURE_PT_voxeldata,
bpy.types.TEXTURE_PT_pointdensity,
- bpy.types.TEXTURE_PT_pointdensity_turbulence,
- bpy.types.TEXTURE_PT_custom_props]
+ bpy.types.TEXTURE_PT_pointdensity_turbulence]
def register():
bpy.types.RENDER_PT_render.append(draw_device)
Modified: branches/cycles/release/scripts/startup/bl_ui/properties_texture.py
===================================================================
--- branches/cycles/release/scripts/startup/bl_ui/properties_texture.py 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/release/scripts/startup/bl_ui/properties_texture.py 2011-06-14 16:05:21 UTC (rev 37479)
@@ -393,7 +393,6 @@
idblock = context_tex_datablock(context)
tex = context.texture
- slot = context.texture_slot
split = layout.split()
@@ -409,6 +408,7 @@
#Only for Material based textures, not for Lamp/World...
if isinstance(idblock, bpy.types.Material):
+ slot = context.texture_slot
col.prop(tex, "use_normal_map")
row = col.row()
row.active = tex.use_normal_map
Modified: branches/cycles/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/cycles/source/blender/blenkernel/BKE_node.h 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/blenkernel/BKE_node.h 2011-06-14 16:05:21 UTC (rev 37479)
@@ -308,6 +308,7 @@
#define SH_NODE_TEX_COORD 155
#define SH_NODE_ADD_CLOSURE 156
#define SH_NODE_TEX_ENVIRONMENT 157
+#define SH_NODE_OUTPUT_TEXTURE 158
/* custom defines options for Material node */
#define SH_NODE_MAT_DIFF 1
Modified: branches/cycles/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/cycles/source/blender/blenkernel/intern/node.c 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/blenkernel/intern/node.c 2011-06-14 16:05:21 UTC (rev 37479)
@@ -3195,8 +3195,23 @@
node_get_stack(node, stack, nsin, nsout, NULL);
gpu_from_node_stack(&node->inputs, nsin, gpuin);
gpu_from_node_stack(&node->outputs, nsout, gpuout);
- if(node->typeinfo->gpufunc(mat, node, gpuin, gpuout))
+ if(node->typeinfo->gpufunc(mat, node, gpuin, gpuout)) {
data_from_gpu_stack(&node->outputs, nsout, gpuout);
+
+#if 0
+ if(node->flag & NODE_ACTIVE) {
+ bNodeSocket *sock;
+ int i;
+
+ for(sock=node->outputs.first, i=0; sock; sock=sock->next, i++) {
+ if(nsout[i]->data) {
+ GPU_material_output_link(mat, nsout[i]->data);
+ break;
+ }
+ }
+ }
+#endif
+ }
}
else if(node->type==NODE_GROUP && node->id) {
node_get_stack(node, stack, nsin, nsout, NULL);
@@ -3618,6 +3633,7 @@
register_node_type_sh_mix_rgb(ntypelist);
register_node_type_sh_rgbtobw(ntypelist);
register_node_type_sh_mapping(ntypelist);
+ //register_node_type_sh_texture(ntypelist);
register_node_type_sh_attribute(ntypelist);
register_node_type_sh_geometry(ntypelist);
@@ -3638,6 +3654,7 @@
register_node_type_sh_output_lamp(ntypelist);
register_node_type_sh_output_material(ntypelist);
+ register_node_type_sh_output_texture(ntypelist);
register_node_type_sh_output_world(ntypelist);
register_node_type_sh_tex_blend(ntypelist);
Modified: branches/cycles/source/blender/editors/interface/interface_node.c
===================================================================
--- branches/cycles/source/blender/editors/interface/interface_node.c 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/editors/interface/interface_node.c 2011-06-14 16:05:21 UTC (rev 37479)
@@ -100,8 +100,16 @@
static void ntree_notify(bContext *C, ID *id, bNodeTree *ntree)
{
- if(ntree->type==NTREE_SHADER)
- WM_event_add_notifier(C, NC_MATERIAL|ND_NODES, id);
+ if(ntree->type==NTREE_SHADER) {
+ if(GS(id->name) == ID_MA)
+ WM_event_add_notifier(C, NC_MATERIAL|ND_NODES, id);
+ else if(GS(id->name) == ID_LA)
+ WM_event_add_notifier(C, NC_LAMP|ND_NODES, id);
+ else if(GS(id->name) == ID_WO)
+ WM_event_add_notifier(C, NC_WORLD|ND_NODES, id);
+ else if(GS(id->name) == ID_TE)
+ WM_event_add_notifier(C, NC_TEXTURE|ND_NODES, id);
+ }
else if(ntree->type==NTREE_COMPOSIT)
WM_event_add_notifier(C, NC_SCENE|ND_NODES, id);
else if(ntree->type==NTREE_TEXTURE)
Modified: branches/cycles/source/blender/editors/render/render_shading.c
===================================================================
--- branches/cycles/source/blender/editors/render/render_shading.c 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/editors/render/render_shading.c 2011-06-14 16:05:21 UTC (rev 37479)
@@ -418,10 +418,14 @@
PropertyRNA *prop;
/* add or copy texture */
- if(tex)
+ if(tex) {
tex= copy_texture(tex);
- else
+ }
+ else {
tex= add_texture("Texture");
+ ED_node_shader_default(&tex->id);
+ tex->use_nodes= 1;
+ }
/* hook into UI */
uiIDContextProperty(C, &ptr, &prop);
Modified: branches/cycles/source/blender/editors/space_node/node_draw.c
===================================================================
--- branches/cycles/source/blender/editors/space_node/node_draw.c 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/editors/space_node/node_draw.c 2011-06-14 16:05:21 UTC (rev 37479)
@@ -99,6 +99,8 @@
WM_main_add_notifier(NC_LAMP|ND_LIGHTING_DRAW, id);
else if(GS(id->name) == ID_WO)
WM_main_add_notifier(NC_WORLD|ND_WORLD_DRAW, id);
+ else if(GS(id->name) == ID_TE)
+ WM_main_add_notifier(NC_TEXTURE|ND_NODES, id);
}
else if(treetype==NTREE_COMPOSIT) {
NodeTagChanged(edittree, node);
Modified: branches/cycles/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/cycles/source/blender/editors/space_node/node_edit.c 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/editors/space_node/node_edit.c 2011-06-14 16:05:21 UTC (rev 37479)
@@ -292,6 +292,11 @@
output_type = SH_NODE_OUTPUT_LAMP;
closure_type = SH_NODE_EMISSION;
break;
+ case ID_TE:
+ ((Tex*)id)->nodetree = ntree;
+ output_type = SH_NODE_OUTPUT_TEXTURE;
+ closure_type = SH_NODE_TEX_CLOUDS;
+ break;
default:
printf("ED_node_shader_default called on wrong ID type.\n");
return;
@@ -353,6 +358,9 @@
/* called from shading buttons or header */
void ED_node_texture_default(Tex *tx)
{
+ ED_node_shader_default(&tx->id);
+
+#if 0
bNode *in, *out;
bNodeSocket *fromsock, *tosock;
@@ -377,6 +385,7 @@
nodeAddLink(tx->nodetree, in, fromsock, out, tosock);
ntreeSolveOrder(tx->nodetree); /* needed for pointers */
+#endif
}
/* id is supposed to contain a node tree */
@@ -403,7 +412,7 @@
}
else if(idtype == ID_TE) {
*ntree= ((Tex*)id)->nodetree;
- if(treetype) *treetype= NTREE_TEXTURE;
+ if(treetype) *treetype= (*ntree)? (*ntree)->type: NTREE_SHADER;
}
else {
if(treetype) *treetype= 0;
Modified: branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h
===================================================================
--- branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h 2011-06-14 15:55:46 UTC (rev 37478)
+++ branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h 2011-06-14 16:05:21 UTC (rev 37479)
@@ -52,6 +52,7 @@
DefNode( ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OUTPUT_MATERIAL",OutputMaterial, "Material Output", "" )
DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" )
+DefNode( ShaderNode, SH_NODE_OUTPUT_TEXTURE, 0, "OUTPUT_TEXTURE", OutputTexture, "Texture Output", "" )
DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" )
DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" )
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list