Hey everyone, here is a windows build with the planet patch: http://blender.dingto.de/trunk_33341_with_planet.7z
Thomas Am 25.11.2010 19:02, schrieb ra...@info.upr.edu.cu: > Hi all :) > > well, I was expecting the GPU gems procedural parts before releasing the > patch in order to add others if needed but it didn't arrived. > > some use advice: > > at small scales (i.e the default textures values) it is a curl like > texture but at larger scales (size 1.0) and with 6 octaves in hard/soft > mode then it show the true planet procedural texture goodness :) > > > Anyway, here's the patch, is very easy and don't disrup any existent > Blender code so is pretty safe: > > http://www.pasteall.org/17124/diff > > //--------------------------------- > > Index: release/scripts/ui/properties_texture.py > =================================================================== > --- release/scripts/ui/properties_texture.py (revision 32153) > +++ release/scripts/ui/properties_texture.py (working copy) > @@ -444,8 +444,33 @@ > > col = split.column() > col.prop(tex, "nabla", text="Nabla") > + > +class TEXTURE_PT_planet(TextureTypePanel, bpy.types.Panel): > + bl_label = "Planet" > + tex_type = 'PLANET' > + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} > > + def draw(self, context): > + layout = self.layout > > + tex = context.texture > + > + layout.prop(tex, "planet_type", expand=True) > + layout.label(text="Noise:") > + layout.prop(tex, "noise_type", text="Type", expand=True) > + layout.prop(tex, "noise_basis", text="Basis") > + > + split = layout.split() > + > + col = split.column() > + col.prop(tex, "noise_scale", text="Size") > + col.prop(tex, "noise_depth", text="Depth") > + > + col = split.column() > + col.prop(tex, "nabla", text="Nabla") > + > + > + > class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel): > bl_label = "Wood" > tex_type = 'WOOD' > Index: source/blender/blenkernel/intern/node.c > =================================================================== > --- source/blender/blenkernel/intern/node.c (revision 32153) > +++ source/blender/blenkernel/intern/node.c (working copy) > @@ -3185,6 +3185,7 @@ > nodeRegisterType(ntypelist,&tex_node_proc_noise); > nodeRegisterType(ntypelist,&tex_node_proc_stucci); > nodeRegisterType(ntypelist,&tex_node_proc_distnoise); > + nodeRegisterType(ntypelist,&tex_node_proc_planet); > } > > static void remove_dynamic_typeinfos(ListBase *list) > Index: source/blender/editors/space_node/drawnode.c > =================================================================== > --- source/blender/editors/space_node/drawnode.c (revision 32153) > +++ source/blender/editors/space_node/drawnode.c (working copy) > @@ -1202,6 +1202,15 @@ > uiItemR(row,&tex_ptr, "noise_type", UI_ITEM_R_EXPAND, > NULL, 0); > uiItemR(col,&tex_ptr, "noise_depth", UI_ITEM_R_EXPAND, > "Depth", 0); > break; > + > + case TEX_PLANET: > + uiItemR(col,&tex_ptr, "noise_basis", 0, "", 0); > + row= uiLayoutRow(col, 0); > + uiItemR(row,&tex_ptr, "stype", UI_ITEM_R_EXPAND, NULL, > 0); > + row= uiLayoutRow(col, 0); > + uiItemR(row,&tex_ptr, "noise_type", UI_ITEM_R_EXPAND, > NULL, 0); > + uiItemR(col,&tex_ptr, "noise_depth", UI_ITEM_R_EXPAND, > "Depth", 0); > + break; > > case TEX_DISTNOISE: > uiItemR(col,&tex_ptr, "noise_basis", 0, "", 0); > Index: source/blender/makesdna/DNA_texture_types.h > =================================================================== > --- source/blender/makesdna/DNA_texture_types.h (revision 32153) > +++ source/blender/makesdna/DNA_texture_types.h (working copy) > @@ -294,6 +294,7 @@ > #define TEX_DISTNOISE 13 > #define TEX_POINTDENSITY 14 > #define TEX_VOXELDATA 15 > +#define TEX_PLANET 16 > > /* musgrave stype */ > #define TEX_MFRACTAL 0 > Index: source/blender/makesrna/intern/rna_texture.c > =================================================================== > --- source/blender/makesrna/intern/rna_texture.c (revision 32153) > +++ source/blender/makesrna/intern/rna_texture.c (working copy) > @@ -66,6 +66,7 @@ > {TEX_VORONOI, "VORONOI", ICON_TEXTURE, "Voronoi", ""}, > {TEX_VOXELDATA, "VOXEL_DATA", ICON_TEXTURE, "Voxel Data", ""}, > {TEX_WOOD, "WOOD", ICON_TEXTURE, "Wood", ""}, > + {TEX_PLANET, "PLANET", ICON_TEXTURE, "Planet", ""}, > {0, NULL, 0, NULL, NULL}}; > > #ifdef RNA_RUNTIME > @@ -119,6 +120,8 @@ > return&RNA_VoxelDataTexture; > case TEX_WOOD: > return&RNA_WoodTexture; > + case TEX_PLANET: > + return&RNA_PlanetTexture; > default: > return&RNA_Texture; > } > @@ -706,6 +709,60 @@ > RNA_def_property_update(prop, 0, "rna_Texture_update"); > } > > +static void rna_def_texture_planet(BlenderRNA *brna) > +{ > + StructRNA *srna; > + PropertyRNA *prop; > + > + static EnumPropertyItem prop_planet_stype[] = { > + {TEX_DEFAULT, "GREYSCALE", 0, "Greyscale", ""}, > + {TEX_COLOR, "COLOR", 0, "Color", ""}, > + {0, NULL, 0, NULL, NULL}}; > + > + srna= RNA_def_struct(brna, "PlanetTexture", "Texture"); > + RNA_def_struct_ui_text(srna, "Planet Texture", "Procedural noise > texture"); > + RNA_def_struct_sdna(srna, "Tex"); > + > + prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE); > + RNA_def_property_float_sdna(prop, NULL, "noisesize"); > + RNA_def_property_range(prop, 0.0001, FLT_MAX); > + RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2); > + RNA_def_property_ui_text(prop, "Noise Size", "Sets scaling for noise > input"); > + RNA_def_property_update(prop, 0, "rna_Texture_update"); > + > + prop= RNA_def_property(srna, "noise_depth", PROP_INT, PROP_NONE); > + RNA_def_property_int_sdna(prop, NULL, "noisedepth"); > + RNA_def_property_range(prop, 0, INT_MAX); > + RNA_def_property_ui_range(prop, 0, 6, 0, 2); > + RNA_def_property_ui_text(prop, "Noise Depth", "Sets the depth of the > cloud calculation"); > + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); > + > + prop= RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE); > + RNA_def_property_enum_sdna(prop, NULL, "noisebasis"); > + RNA_def_property_enum_items(prop, prop_noise_basis_items); > + RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used > for turbulence"); > + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); > + > + prop= RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE); > + RNA_def_property_enum_sdna(prop, NULL, "noisetype"); > + RNA_def_property_enum_items(prop, prop_noise_type); > + RNA_def_property_ui_text(prop, "Noise Type", ""); > + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); > + > + prop= RNA_def_property(srna, "planet_type", PROP_ENUM, PROP_NONE); > + RNA_def_property_enum_sdna(prop, NULL, "stype"); > + RNA_def_property_enum_items(prop, prop_planet_stype); > + RNA_def_property_ui_text(prop, "Color", ""); > + RNA_def_property_update(prop, 0, "rna_Texture_nodes_update"); > + > + prop= RNA_def_property(srna, "nabla", PROP_FLOAT, PROP_NONE); > + RNA_def_property_range(prop, 0.001, 0.1); > + RNA_def_property_ui_range(prop, 0.001, 0.1, 1, 2); > + RNA_def_property_ui_text(prop, "Nabla", "Size of derivative offset used > for calculating normal"); > + RNA_def_property_update(prop, 0, "rna_Texture_update"); > +} > + > + > static void rna_def_texture_wood(BlenderRNA *brna) > { > StructRNA *srna; > @@ -1768,6 +1825,7 @@ > rna_def_texture_distorted_noise(brna); > rna_def_texture_pointdensity(brna); > rna_def_texture_voxeldata(brna); > + rna_def_texture_planet(brna); > /* XXX add more types here .. */ > } > > Index: source/blender/makesrna/RNA_access.h > =================================================================== > --- source/blender/makesrna/RNA_access.h (revision 32153) > +++ source/blender/makesrna/RNA_access.h (working copy) > @@ -93,6 +93,7 @@ > extern StructRNA RNA_ClothModifier; > extern StructRNA RNA_ClothSettings; > extern StructRNA RNA_CloudsTexture; > +extern StructRNA RNA_PlanetTexture; > extern StructRNA RNA_CollectionProperty; > extern StructRNA RNA_CollisionModifier; > extern StructRNA RNA_CollisionSensor; > Index: source/blender/nodes/intern/TEX_nodes/TEX_proc.c > =================================================================== > --- source/blender/nodes/intern/TEX_nodes/TEX_proc.c (revision 32153) > +++ source/blender/nodes/intern/TEX_nodes/TEX_proc.c (working copy) > @@ -202,6 +202,18 @@ > } > ProcDef(clouds) > > +/* --- Planet --- */ > +static bNodeSocketType planet_inputs[]= { > + COMMON_INPUTS, > + { SOCK_VALUE, 1, "Size", 0.25f, 0.0f, 0.0f, 0.0f, 0.0001f, 2.0f > }, > + { -1, 0, "" } > +}; > +static void planet_map_inputs(Tex *tex, bNodeStack **in, TexParams *p, > short thread) > +{ > + tex->noisesize = tex_input_value(in[I+0], p, thread); > +} > +ProcDef(planet) > + > /* --- DISTORTED NOISE --- */ > static bNodeSocketType distnoise_inputs[]= { > COMMON_INPUTS, > @@ -307,4 +319,5 @@ > bNodeType tex_node_proc_noise = TexDef(TEX_NOISE, C, noise, > "Noise" ); > bNodeType tex_node_proc_stucci = TexDef(TEX_STUCCI, CV, stucci, > "Stucci" ); > bNodeType tex_node_proc_distnoise = TexDef(TEX_DISTNOISE, CV, distnoise, > "Distorted Noise" ); > +bNodeType tex_node_proc_planet = TexDef(TEX_PLANET, CV, planet, > "Planet" ); > > Index: source/blender/nodes/TEX_node.h > =================================================================== > --- source/blender/nodes/TEX_node.h (revision 32153) > +++ source/blender/nodes/TEX_node.h (working copy) > @@ -74,5 +74,6 @@ > extern bNodeType tex_node_proc_noise; > extern bNodeType tex_node_proc_stucci; > extern bNodeType tex_node_proc_distnoise; > +extern bNodeType tex_node_proc_planet; > > #endif > Index: source/blender/render/intern/source/texture.c > =================================================================== > --- source/blender/render/intern/source/texture.c (revision 32153) > +++ source/blender/render/intern/source/texture.c (working copy) > @@ -234,12 +234,11 @@ > > /* > ------------------------------------------------------------------------- > */ > /* > ************************************************************************* > */ > - > /* newnoise: all noisebased types now have different noisebases to choose > from */ > > static int clouds(Tex *tex, float *texvec, TexResult *texres) > -{ > - int rv = TEX_INT; > +{ > + int rv = TEX_INT; > > texres->tin = BLI_gTurbulence(tex->noisesize, texvec[0], texvec[1], > texvec[2], tex->noisedepth, (tex->noisetype!=TEX_NOISESOFT), > tex->noisebasis); > > @@ -270,6 +269,70 @@ > > } > > +/* planet procedural noise */ > +static void planet_noise(float *result, float noisesize, float x, float > y, float z, int oct, int hard, int noisebasis, float nabla){ > + float xdy, xdz, ydx, ydz, zdx, zdy; > + float d = 0.001f; > + float offset = nabla * 1000.f; > + > + float dx[3], dy[3], xo , yo, zo; > + > + x = BLI_gTurbulence(noisesize, x, y, z, oct, hard, noisebasis); > + y = BLI_gTurbulence(noisesize, x + offset, y , z, oct, hard, > noisebasis); > + z = BLI_gTurbulence(noisesize, x, y + offset, z , oct, hard, > noisebasis); > + > + //------------------------------- > + xdy = x - BLI_gTurbulence(noisesize, x , y + d, z, oct, hard, > noisebasis); > + xdz = x - BLI_gTurbulence(noisesize, x, y, z + d, oct, hard, > noisebasis); > + > + ydx = y - BLI_gTurbulence(noisesize, x + d, y, z, oct, hard, > noisebasis); > + ydz = y - BLI_gTurbulence(noisesize, x, y, z + d, oct, hard, > noisebasis); > + > + zdx = z - BLI_gTurbulence(noisesize, x + d, y, z, oct, hard, > noisebasis); > + zdy = z - BLI_gTurbulence(noisesize, x, y + d, z, oct, hard, > noisebasis); > + > + result[0] = (zdy - ydz); > + result[1] = (zdx - xdz); > + result[2] = (ydx - xdy); > + > +} > + > +static int planet(Tex *tex, float *texvec, TexResult *texres) > +{ > + float result[3] = {0.f,0.f,0.f}; > + int rv = TEX_INT; > + > + planet_noise(result, tex->noisesize, texvec[0], texvec[1], texvec[2], > tex->noisedepth, (tex->noisetype!=TEX_NOISESOFT), tex->noisebasis, > tex->nabla); > + > + texres->tin = result[0]; > + > + if (texres->nor!=NULL) { > + // calculate bumpnormal > + texres->nor[0] = result[0]; > + texres->nor[1] = result[1]; > + texres->nor[2] = result[2]; > + > + tex_normal_derivate(tex, texres); > + rv |= TEX_NOR; > + } > + > + if (tex->stype==TEX_COLOR) { > + // in this case, int. value should really be computed from > color, > + // and bumpnormal from that, would be too slow, looks ok as is > + texres->tr = result[0]; > + texres->tg = result[1]; > + texres->tb = result[2]; > + BRICONTRGB; > + texres->ta = 1.0; > + return (rv | TEX_RGB); > + } > + > + BRICONT; > + > + return rv; > + > +} > + > /* creates a sine wave */ > static float tex_sin(float a) > { > @@ -1257,6 +1320,8 @@ > case TEX_VOXELDATA: > retval= voxeldatatex(tex, texvec, texres); > break; > + case TEX_PLANET: > + retval= planet(tex, texvec, texres); > > } > > > > > _______________________________________________ > Bf-committers mailing list > Bf-committers@blender.org > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers