[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