2.5: Material buttons
[blender.git] / source / blender / makesrna / intern / rna_material.c
index 4ac3996d0a57b78abdf04d2e57e74114f7427e5d..66c08c4da4cde376b251489d8960d186cb6833ce 100644 (file)
@@ -527,10 +527,16 @@ static void rna_def_material_colors(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Mirror Color", "Mirror color of the material.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "alpha", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "alpha", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Alpha", "Alpha transparency of the material.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING_DRAW, NULL);
+
+       prop= RNA_def_property(srna, "specular_alpha", PROP_FLOAT, PROP_PERCENTAGE);
+       RNA_def_property_float_sdna(prop, NULL, "spectra");
+       RNA_def_property_range(prop, 0.0f, 1.0f);
+       RNA_def_property_ui_text(prop, "Specular Alpha", "Alpha transparency for specular areas.");
+       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
        /* Color bands */
        prop= RNA_def_property(srna, "use_diffuse_ramp", PROP_BOOLEAN, PROP_NONE);
@@ -599,7 +605,7 @@ static void rna_def_material_diffuse(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Diffuse Shader Model", "");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "diffuse_reflection", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "diffuse_reflection", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "ref");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Diffuse Reflection", "Amount of diffuse reflection.");
@@ -616,7 +622,7 @@ static void rna_def_material_diffuse(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Diffuse Toon Size", "Size of diffuse toon area.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
 
-       prop= RNA_def_property(srna, "diffuse_toon_smooth", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "diffuse_toon_smooth", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "param[1]");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Diffuse Toon Smooth", "Smoothness of diffuse toon area.");
@@ -660,7 +666,7 @@ static void rna_def_material_raymirror(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Enabled", "Enable raytraced reflections.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
                
-       prop= RNA_def_property(srna, "reflect", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "reflect", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "ray_mirror");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Reflect", "Sets the amount mirror reflection for raytrace.");
@@ -672,19 +678,19 @@ static void rna_def_material_raymirror(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Fresnel", "Power of Fresnel for mirror reflection.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "fresnel_fac", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "fresnel_factor", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "fresnel_mir_i");
        RNA_def_property_range(prop, 0.0f, 5.0f);
        RNA_def_property_ui_text(prop, "Fresnel Factor", "Blending factor for Fresnel.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "gloss", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "gloss", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "gloss_mir");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Gloss", "The shininess of the reflection. Values < 1.0 give diffuse, blurry reflections.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "gloss_anisotropic", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "gloss_anisotropic", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "aniso_gloss_mir");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Gloss Anisotropy", "The shape of the reflection, from 0.0 (circular) to 1.0 (fully stretched along the tangent.");
@@ -696,7 +702,7 @@ static void rna_def_material_raymirror(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Gloss Samples", "Number of cone samples averaged for blurry reflections.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "gloss_threshold", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "gloss_threshold", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "adapt_thresh_mir");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Gloss Threshold", "Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped.");
@@ -731,11 +737,6 @@ static void rna_def_material_raytra(BlenderRNA *brna)
        RNA_def_struct_nested(brna, srna, "Material");
        RNA_def_struct_ui_text(srna, "Material Raytrace Transparency", "Raytraced refraction settings for a Material datablock.");
 
-       prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RAYTRANSP); /* use bitflags */
-       RNA_def_property_ui_text(prop, "Enabled", "Enables raytracing for transparent refraction rendering.");
-       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
-       
        prop= RNA_def_property(srna, "ior", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "ang");
        RNA_def_property_range(prop, 1.0f, 3.0f);
@@ -748,13 +749,13 @@ static void rna_def_material_raytra(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Fresnel", "Power of Fresnel for transparency (Ray or ZTransp).");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "fresnel_fac", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "fresnel_factor", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "fresnel_tra_i");
        RNA_def_property_range(prop, 1.0f, 5.0f);
        RNA_def_property_ui_text(prop, "Fresnel Factor", "Blending factor for Fresnel.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "gloss", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "gloss", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "gloss_tra");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Gloss", "The clarity of the refraction. Values < 1.0 give diffuse, blurry refractions.");
@@ -766,7 +767,7 @@ static void rna_def_material_raytra(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Gloss Samples", "Number of cone samples averaged for blurry refractions.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "gloss_threshold", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "gloss_threshold", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "adapt_thresh_tra");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Gloss Threshold", "Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped.");
@@ -778,7 +779,7 @@ static void rna_def_material_raytra(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Depth", "Maximum allowed number of light inter-refractions.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "filter", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "filter", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "filter");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Filter", "Amount to blend in the material's diffuse color in raytraced transparency (simulating absorption).");
@@ -795,12 +796,6 @@ static void rna_def_material_raytra(BlenderRNA *brna)
        RNA_def_property_range(prop, 0.1f, 10.0f);
        RNA_def_property_ui_text(prop, "Falloff", "Falloff power for transmissivity filter effect (1.0 is linear).");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
-       
-       prop= RNA_def_property(srna, "specular_opacity", PROP_FLOAT, PROP_NONE);
-       RNA_def_property_float_sdna(prop, NULL, "spectra");
-       RNA_def_property_range(prop, 0.0f, 1.0f);
-       RNA_def_property_ui_text(prop, "Specular Opacity", "Makes specular areas opaque on transparent materials.");
-       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
 }
 
 static void rna_def_material_halo(BlenderRNA *brna)
@@ -825,7 +820,7 @@ static void rna_def_material_halo(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Hardness", "Sets the hardness of the halo.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "add", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "add", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "add");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Add", "Sets the strength of the add effect.");
@@ -971,13 +966,13 @@ static void rna_def_material_sss(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "IOR", "Index of refraction (higher values are denser).");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
 
-       prop= RNA_def_property(srna, "color_factor", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "color_factor", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "sss_colfac");
        RNA_def_property_ui_range(prop, 0, 1, 10, 3);
        RNA_def_property_ui_text(prop, "Color Factor", "Blend factor for SSS colors.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
 
-       prop= RNA_def_property(srna, "texture_factor", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "texture_factor", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "sss_texfac");
        RNA_def_property_ui_range(prop, 0, 1, 10, 3);
        RNA_def_property_ui_text(prop, "Texture Factor", "Texture scatting blend factor.");
@@ -1019,7 +1014,7 @@ void rna_def_material_specularity(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Specular Shader Model", "");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "specular_reflection", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "specular_reflection", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "spec");
        RNA_def_property_range(prop, 0, 1);
        RNA_def_property_ui_text(prop, "Specularity Intensity", "");
@@ -1048,7 +1043,7 @@ void rna_def_material_specularity(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Specular Toon Size", "Size of specular toon area.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
 
-       prop= RNA_def_property(srna, "specular_toon_smooth", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "specular_toon_smooth", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "param[3]");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Specular Toon Smooth", "Ssmoothness of specular toon area.");
@@ -1179,6 +1174,10 @@ void RNA_def_material(BlenderRNA *brna)
                // {MA_TYPE_VOLUME, "VOLUME", 0, "Volume", "Render object as a volume."},
                {MA_TYPE_HALO, "HALO", 0, "Halo", "Render object as halo particles."},
                {0, NULL, 0, NULL, NULL}};
+       static EnumPropertyItem transparency_items[] = {
+               {MA_ZTRANSP, "Z_TRANSPARENCY", 0, "Z Transparency", "Use alpha buffer for transparent faces."},
+               {MA_RAYTRANSP, "RAYTRACE", 0, "Raytrace", "Use raytracing for transparent refraction rendering."},
+               {0, NULL, 0, NULL, NULL}};
 
        srna= RNA_def_struct(brna, "Material", "ID");
        RNA_def_struct_ui_text(srna, "Material", "Material datablock to defined the appearance of geometric objects for rendering.");
@@ -1190,8 +1189,19 @@ void RNA_def_material(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Type", "Material type defining how the object is rendered.");
        RNA_def_property_enum_funcs(prop, NULL, "rna_Material_type_set", NULL);
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING_DRAW, NULL);
+
+       prop= RNA_def_property(srna, "transparency", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TRANSP);
+       RNA_def_property_ui_text(prop, "Transparency", "Render material as transparent.");
+       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+       prop= RNA_def_property(srna, "transparency_method", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_bitflag_sdna(prop, NULL, "mode");
+       RNA_def_property_enum_items(prop, transparency_items);
+       RNA_def_property_ui_text(prop, "Transparency Method", "Method to use for rendering transparency.");
+       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "ambient", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "ambient", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "amb");
        RNA_def_property_range(prop, 0, 1);
        RNA_def_property_ui_text(prop, "Ambient", "Amount of global ambient color the material receives.");
@@ -1202,7 +1212,7 @@ void RNA_def_material(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Emit", "Amount of light to emit.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
 
-       prop= RNA_def_property(srna, "translucency", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "translucency", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_range(prop, 0, 1);
        RNA_def_property_ui_text(prop, "Translucency", "Amount of diffuse shading on the back side.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
@@ -1227,7 +1237,7 @@ void RNA_def_material(BlenderRNA *brna)
        RNA_def_property_range(prop, 0, 10);
        RNA_def_property_ui_text(prop, "Shadow Buffer Bias", "Factor to multiply shadow buffer bias with (0 is ignore.)");
 
-       prop= RNA_def_property(srna, "shadow_casting_alpha", PROP_FLOAT, PROP_NONE);
+       prop= RNA_def_property(srna, "shadow_casting_alpha", PROP_FLOAT, PROP_PERCENTAGE);
        RNA_def_property_float_sdna(prop, NULL, "shad_alpha");
        RNA_def_property_range(prop, 0.001, 1);
        RNA_def_property_ui_text(prop, "Shadow Casting Alpha", "Shadow casting alpha, only in use for Irregular Shadowbuffer.");
@@ -1262,11 +1272,6 @@ void RNA_def_material(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Shadeless", "Makes this material insensitive to light or shadow.");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "z_transparency", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ZTRA);
-       RNA_def_property_ui_text(prop, "Z Transparency", "Enable alpha buffer for transparent faces.");
-       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
-       
        prop= RNA_def_property(srna, "vertex_color_light", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_VERTEXCOL);
        RNA_def_property_ui_text(prop, "Vertex Color Light", "Add vertex colors as additional lighting.");
@@ -1312,11 +1317,6 @@ void RNA_def_material(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Exclude Mist", "Excludes this material from mist effects (in world settings)");
        RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
        
-       prop= RNA_def_property(srna, "radiosity", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RADIO);
-       RNA_def_property_ui_text(prop, "Radiosity", "Include this material in radiosity calculations");
-       RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
-       
        prop= RNA_def_property(srna, "transparent_shadows", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADOW_TRA);
        RNA_def_property_ui_text(prop, "Transparent Shadows", "Allow this object to receive transparent shadows casted through other objects");