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. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to