Goals of this refactor:
* More unified approach to updating everything that needs to be updated
after a change in a node tree.
* The updates should happen in the correct order and quadratic or worse
algorithms should be avoided.
* Improve detection of changes to the output to avoid tagging the depsgraph
when it's not necessary.
* Move towards a more declarative style of defining nodes by having a
more centralized update procedure.
The refactor consists of two main parts:
* Node tree tagging and update refactor.
* Generally, when changes are done to a node tree, it is tagged dirty
until a global update function is called that updates everything in
the correct order.
* The tagging is more fine-grained compared to before, to allow for more
precise depsgraph update tagging.
* Depsgraph changes.
* The shading specific depsgraph node for node trees as been removed.
* Instead, there is a new `NTREE_OUTPUT` depsgrap node, which is only
tagged when the output of the node tree changed (e.g. the Group Output
or Material Output node).
* The copy-on-write relation from node trees to the data block they are
embedded in is now non-flushing. This avoids e.g. triggering a material
update after the shader node tree changed in unrelated ways. Instead
the material has a flushing relation to the new `NTREE_OUTPUT` node now.
* The depsgraph no longer reports data block changes through to cycles
through `Depsgraph.updates` when only the node tree changed in ways
that do not affect the output.
Avoiding unnecessary updates seems to work well for geometry nodes and cycles.
The situation is a bit worse when there are drivers on the node tree, but that
could potentially be improved separately in the future.
Avoiding updates in eevee and the compositor is more tricky, but also less urgent.
* Eevee updates are triggered by calling `DRW_notify_view_update` in
`ED_render_view3d_update` indirectly from `DEG_editors_update`.
* Compositor updates are triggered by `ED_node_composite_job` in `node_area_refresh`.
This is triggered by calling `ED_area_tag_refresh` in `node_area_listener`.
Removing updates always has the risk of breaking some dependency that no
one was aware of. It's not unlikely that this will happen here as well. Adding
back missing updates should be quite a bit easier than getting rid of
unnecessary updates though.
Differential Revision: https://developer.blender.org/D13246
1677 lines
66 KiB
C
1677 lines
66 KiB
C
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
/** \file
|
|
* \ingroup RNA
|
|
*/
|
|
|
|
#include <float.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "DNA_brush_types.h"
|
|
#include "DNA_light_types.h"
|
|
#include "DNA_material_types.h"
|
|
#include "DNA_node_types.h"
|
|
#include "DNA_object_types.h"
|
|
#include "DNA_particle_types.h"
|
|
#include "DNA_scene_types.h" /* MAXFRAME only */
|
|
#include "DNA_texture_types.h"
|
|
#include "DNA_world_types.h"
|
|
|
|
#include "BLI_utildefines.h"
|
|
|
|
#include "BKE_node.h"
|
|
#include "BKE_paint.h"
|
|
|
|
#include "RNA_define.h"
|
|
#include "RNA_enum_types.h"
|
|
|
|
#include "rna_internal.h"
|
|
|
|
#include "WM_api.h"
|
|
#include "WM_types.h"
|
|
|
|
#ifndef RNA_RUNTIME
|
|
static const EnumPropertyItem texture_filter_items[] = {
|
|
{TXF_BOX, "BOX", 0, "Box", ""},
|
|
{TXF_EWA, "EWA", 0, "EWA", ""},
|
|
{TXF_FELINE, "FELINE", 0, "FELINE", ""},
|
|
{TXF_AREA, "AREA", 0, "Area", ""},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
#endif
|
|
|
|
const EnumPropertyItem rna_enum_texture_type_items[] = {
|
|
{0, "NONE", 0, "None", ""},
|
|
{TEX_BLEND, "BLEND", ICON_TEXTURE, "Blend", "Procedural - create a ramp texture"},
|
|
{TEX_CLOUDS,
|
|
"CLOUDS",
|
|
ICON_TEXTURE,
|
|
"Clouds",
|
|
"Procedural - create a cloud-like fractal noise texture"},
|
|
{TEX_DISTNOISE,
|
|
"DISTORTED_NOISE",
|
|
ICON_TEXTURE,
|
|
"Distorted Noise",
|
|
"Procedural - noise texture distorted by two noise algorithms"},
|
|
{TEX_IMAGE,
|
|
"IMAGE",
|
|
ICON_IMAGE_DATA,
|
|
"Image or Movie",
|
|
"Allow for images or movies to be used as textures"},
|
|
{TEX_MAGIC,
|
|
"MAGIC",
|
|
ICON_TEXTURE,
|
|
"Magic",
|
|
"Procedural - color texture based on trigonometric functions"},
|
|
{TEX_MARBLE,
|
|
"MARBLE",
|
|
ICON_TEXTURE,
|
|
"Marble",
|
|
"Procedural - marble-like noise texture with wave generated bands"},
|
|
{TEX_MUSGRAVE,
|
|
"MUSGRAVE",
|
|
ICON_TEXTURE,
|
|
"Musgrave",
|
|
"Procedural - highly flexible fractal noise texture"},
|
|
{TEX_NOISE,
|
|
"NOISE",
|
|
ICON_TEXTURE,
|
|
"Noise",
|
|
"Procedural - random noise, gives a different result every time, for every frame, for every "
|
|
"pixel"},
|
|
{TEX_STUCCI, "STUCCI", ICON_TEXTURE, "Stucci", "Procedural - create a fractal noise texture"},
|
|
{TEX_VORONOI,
|
|
"VORONOI",
|
|
ICON_TEXTURE,
|
|
"Voronoi",
|
|
"Procedural - create cell-like patterns based on Worley noise"},
|
|
{TEX_WOOD,
|
|
"WOOD",
|
|
ICON_TEXTURE,
|
|
"Wood",
|
|
"Procedural - wave generated bands or rings, with optional noise"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
#ifndef RNA_RUNTIME
|
|
static const EnumPropertyItem blend_type_items[] = {
|
|
{MTEX_BLEND, "MIX", 0, "Mix", ""},
|
|
{0, "", ICON_NONE, NULL, NULL},
|
|
{MTEX_DARK, "DARKEN", 0, "Darken", ""},
|
|
{MTEX_MUL, "MULTIPLY", 0, "Multiply", ""},
|
|
{0, "", ICON_NONE, NULL, NULL},
|
|
{MTEX_LIGHT, "LIGHTEN", 0, "Lighten", ""},
|
|
{MTEX_SCREEN, "SCREEN", 0, "Screen", ""},
|
|
{MTEX_ADD, "ADD", 0, "Add", ""},
|
|
{0, "", ICON_NONE, NULL, NULL},
|
|
{MTEX_OVERLAY, "OVERLAY", 0, "Overlay", ""},
|
|
{MTEX_SOFT_LIGHT, "SOFT_LIGHT", 0, "Soft Light", ""},
|
|
{MTEX_LIN_LIGHT, "LINEAR_LIGHT", 0, "Linear Light", ""},
|
|
{0, "", ICON_NONE, NULL, NULL},
|
|
{MTEX_DIFF, "DIFFERENCE", 0, "Difference", ""},
|
|
{MTEX_SUB, "SUBTRACT", 0, "Subtract", ""},
|
|
{MTEX_DIV, "DIVIDE", 0, "Divide", ""},
|
|
{0, "", ICON_NONE, NULL, NULL},
|
|
{MTEX_BLEND_HUE, "HUE", 0, "Hue", ""},
|
|
{MTEX_BLEND_SAT, "SATURATION", 0, "Saturation", ""},
|
|
{MTEX_BLEND_COLOR, "COLOR", 0, "Color", ""},
|
|
{MTEX_BLEND_VAL, "VALUE", 0, "Value", ""},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
#endif
|
|
|
|
#ifdef RNA_RUNTIME
|
|
|
|
# include "MEM_guardedalloc.h"
|
|
|
|
# include "RNA_access.h"
|
|
|
|
# include "BKE_colorband.h"
|
|
# include "BKE_context.h"
|
|
# include "BKE_image.h"
|
|
# include "BKE_main.h"
|
|
# include "BKE_texture.h"
|
|
|
|
# include "DEG_depsgraph.h"
|
|
# include "DEG_depsgraph_build.h"
|
|
|
|
# include "ED_node.h"
|
|
# include "ED_render.h"
|
|
|
|
static StructRNA *rna_Texture_refine(struct PointerRNA *ptr)
|
|
{
|
|
Tex *tex = (Tex *)ptr->data;
|
|
|
|
switch (tex->type) {
|
|
case TEX_BLEND:
|
|
return &RNA_BlendTexture;
|
|
case TEX_CLOUDS:
|
|
return &RNA_CloudsTexture;
|
|
case TEX_DISTNOISE:
|
|
return &RNA_DistortedNoiseTexture;
|
|
case TEX_IMAGE:
|
|
return &RNA_ImageTexture;
|
|
case TEX_MAGIC:
|
|
return &RNA_MagicTexture;
|
|
case TEX_MARBLE:
|
|
return &RNA_MarbleTexture;
|
|
case TEX_MUSGRAVE:
|
|
return &RNA_MusgraveTexture;
|
|
case TEX_NOISE:
|
|
return &RNA_NoiseTexture;
|
|
case TEX_STUCCI:
|
|
return &RNA_StucciTexture;
|
|
case TEX_VORONOI:
|
|
return &RNA_VoronoiTexture;
|
|
case TEX_WOOD:
|
|
return &RNA_WoodTexture;
|
|
default:
|
|
return &RNA_Texture;
|
|
}
|
|
}
|
|
|
|
static void rna_Texture_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
|
|
{
|
|
ID *id = ptr->owner_id;
|
|
|
|
if (GS(id->name) == ID_TE) {
|
|
Tex *tex = (Tex *)ptr->owner_id;
|
|
|
|
DEG_id_tag_update(&tex->id, 0);
|
|
DEG_id_tag_update(&tex->id, ID_RECALC_EDITORS);
|
|
WM_main_add_notifier(NC_TEXTURE, tex);
|
|
WM_main_add_notifier(NC_MATERIAL | ND_SHADING_DRAW, NULL);
|
|
}
|
|
else if (GS(id->name) == ID_NT) {
|
|
bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
|
|
ED_node_tree_propagate_change(NULL, bmain, ntree);
|
|
}
|
|
}
|
|
|
|
static void rna_Texture_mapping_update(Main *bmain, Scene *scene, PointerRNA *ptr)
|
|
{
|
|
TexMapping *texmap = ptr->data;
|
|
BKE_texture_mapping_init(texmap);
|
|
rna_Texture_update(bmain, scene, ptr);
|
|
}
|
|
|
|
static void rna_Color_mapping_update(Main *UNUSED(bmain),
|
|
Scene *UNUSED(scene),
|
|
PointerRNA *UNUSED(ptr))
|
|
{
|
|
/* nothing to do */
|
|
}
|
|
|
|
/* Used for Texture Properties, used (also) for/in Nodes */
|
|
static void rna_Texture_nodes_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
|
|
{
|
|
Tex *tex = (Tex *)ptr->owner_id;
|
|
|
|
DEG_id_tag_update(&tex->id, 0);
|
|
DEG_id_tag_update(&tex->id, ID_RECALC_EDITORS);
|
|
WM_main_add_notifier(NC_TEXTURE | ND_NODES, tex);
|
|
}
|
|
|
|
static void rna_Texture_type_set(PointerRNA *ptr, int value)
|
|
{
|
|
Tex *tex = (Tex *)ptr->data;
|
|
|
|
BKE_texture_type_set(tex, value);
|
|
}
|
|
|
|
void rna_TextureSlotTexture_update(bContext *C, PointerRNA *ptr)
|
|
{
|
|
DEG_relations_tag_update(CTX_data_main(C));
|
|
rna_TextureSlot_update(C, ptr);
|
|
}
|
|
|
|
void rna_TextureSlot_update(bContext *C, PointerRNA *ptr)
|
|
{
|
|
ID *id = ptr->owner_id;
|
|
|
|
DEG_id_tag_update(id, 0);
|
|
|
|
switch (GS(id->name)) {
|
|
case ID_MA:
|
|
WM_main_add_notifier(NC_MATERIAL | ND_SHADING, id);
|
|
WM_main_add_notifier(NC_MATERIAL | ND_SHADING_DRAW, id);
|
|
break;
|
|
case ID_WO:
|
|
WM_main_add_notifier(NC_WORLD, id);
|
|
break;
|
|
case ID_LA:
|
|
WM_main_add_notifier(NC_LAMP | ND_LIGHTING, id);
|
|
WM_main_add_notifier(NC_LAMP | ND_LIGHTING_DRAW, id);
|
|
break;
|
|
case ID_BR: {
|
|
Scene *scene = CTX_data_scene(C);
|
|
MTex *mtex = ptr->data;
|
|
ViewLayer *view_layer = CTX_data_view_layer(C);
|
|
BKE_paint_invalidate_overlay_tex(scene, view_layer, mtex->tex);
|
|
WM_main_add_notifier(NC_BRUSH, id);
|
|
break;
|
|
}
|
|
case ID_LS:
|
|
WM_main_add_notifier(NC_LINESTYLE, id);
|
|
break;
|
|
case ID_PA: {
|
|
MTex *mtex = ptr->data;
|
|
int recalc = ID_RECALC_GEOMETRY;
|
|
|
|
if (mtex->mapto & PAMAP_INIT) {
|
|
recalc |= ID_RECALC_PSYS_RESET;
|
|
}
|
|
if (mtex->mapto & PAMAP_CHILD) {
|
|
recalc |= ID_RECALC_PSYS_CHILD;
|
|
}
|
|
|
|
DEG_id_tag_update(id, recalc);
|
|
WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
char *rna_TextureSlot_path(PointerRNA *ptr)
|
|
{
|
|
MTex *mtex = ptr->data;
|
|
|
|
/* if there is ID-data, resolve the path using the index instead of by name,
|
|
* since the name used is the name of the texture assigned, but the texture
|
|
* may be used multiple times in the same stack
|
|
*/
|
|
if (ptr->owner_id) {
|
|
if (GS(ptr->owner_id->name) == ID_BR) {
|
|
return BLI_strdup("texture_slot");
|
|
}
|
|
else {
|
|
PointerRNA id_ptr;
|
|
PropertyRNA *prop;
|
|
|
|
/* find the 'textures' property of the ID-struct */
|
|
RNA_id_pointer_create(ptr->owner_id, &id_ptr);
|
|
prop = RNA_struct_find_property(&id_ptr, "texture_slots");
|
|
|
|
/* get an iterator for this property, and try to find the relevant index */
|
|
if (prop) {
|
|
int index = RNA_property_collection_lookup_index(&id_ptr, prop, ptr);
|
|
|
|
if (index != -1) {
|
|
return BLI_sprintfN("texture_slots[%d]", index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* this is a compromise for the remaining cases... */
|
|
if (mtex->tex) {
|
|
char name_esc[(sizeof(mtex->tex->id.name) - 2) * 2];
|
|
|
|
BLI_str_escape(name_esc, mtex->tex->id.name + 2, sizeof(name_esc));
|
|
return BLI_sprintfN("texture_slots[\"%s\"]", name_esc);
|
|
}
|
|
else {
|
|
return BLI_strdup("texture_slots[0]");
|
|
}
|
|
}
|
|
|
|
static int rna_TextureSlot_name_length(PointerRNA *ptr)
|
|
{
|
|
MTex *mtex = ptr->data;
|
|
|
|
if (mtex->tex) {
|
|
return strlen(mtex->tex->id.name + 2);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static void rna_TextureSlot_name_get(PointerRNA *ptr, char *str)
|
|
{
|
|
MTex *mtex = ptr->data;
|
|
|
|
if (mtex->tex) {
|
|
strcpy(str, mtex->tex->id.name + 2);
|
|
}
|
|
else {
|
|
str[0] = '\0';
|
|
}
|
|
}
|
|
|
|
static int rna_TextureSlot_output_node_get(PointerRNA *ptr)
|
|
{
|
|
MTex *mtex = ptr->data;
|
|
Tex *tex = mtex->tex;
|
|
int cur = mtex->which_output;
|
|
|
|
if (tex) {
|
|
bNodeTree *ntree = tex->nodetree;
|
|
bNode *node;
|
|
if (ntree) {
|
|
for (node = ntree->nodes.first; node; node = node->next) {
|
|
if (node->type == TEX_NODE_OUTPUT) {
|
|
if (cur == node->custom1) {
|
|
return cur;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
mtex->which_output = 0;
|
|
return 0;
|
|
}
|
|
|
|
static const EnumPropertyItem *rna_TextureSlot_output_node_itemf(bContext *UNUSED(C),
|
|
PointerRNA *ptr,
|
|
PropertyRNA *UNUSED(prop),
|
|
bool *r_free)
|
|
{
|
|
MTex *mtex = ptr->data;
|
|
Tex *tex = mtex->tex;
|
|
EnumPropertyItem *item = NULL;
|
|
int totitem = 0;
|
|
|
|
if (tex) {
|
|
bNodeTree *ntree = tex->nodetree;
|
|
if (ntree) {
|
|
EnumPropertyItem tmp = {0, "", 0, "", ""};
|
|
bNode *node;
|
|
|
|
tmp.value = 0;
|
|
tmp.name = "Not Specified";
|
|
tmp.identifier = "NOT_SPECIFIED";
|
|
RNA_enum_item_add(&item, &totitem, &tmp);
|
|
|
|
for (node = ntree->nodes.first; node; node = node->next) {
|
|
if (node->type == TEX_NODE_OUTPUT) {
|
|
tmp.value = node->custom1;
|
|
tmp.name = ((TexNodeOutput *)node->storage)->name;
|
|
tmp.identifier = tmp.name;
|
|
RNA_enum_item_add(&item, &totitem, &tmp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
RNA_enum_item_end(&item, &totitem);
|
|
*r_free = true;
|
|
|
|
return item;
|
|
}
|
|
|
|
static void rna_Texture_use_color_ramp_set(PointerRNA *ptr, bool value)
|
|
{
|
|
Tex *tex = (Tex *)ptr->data;
|
|
|
|
if (value) {
|
|
tex->flag |= TEX_COLORBAND;
|
|
}
|
|
else {
|
|
tex->flag &= ~TEX_COLORBAND;
|
|
}
|
|
|
|
if ((tex->flag & TEX_COLORBAND) && tex->coba == NULL) {
|
|
tex->coba = BKE_colorband_add(false);
|
|
}
|
|
}
|
|
|
|
static void rna_Texture_use_nodes_update(bContext *C, PointerRNA *ptr)
|
|
{
|
|
Tex *tex = (Tex *)ptr->data;
|
|
|
|
if (tex->use_nodes) {
|
|
tex->type = 0;
|
|
|
|
if (tex->nodetree == NULL) {
|
|
ED_node_texture_default(C, tex);
|
|
}
|
|
}
|
|
|
|
rna_Texture_nodes_update(CTX_data_main(C), CTX_data_scene(C), ptr);
|
|
}
|
|
|
|
static void rna_ImageTexture_mipmap_set(PointerRNA *ptr, bool value)
|
|
{
|
|
Tex *tex = (Tex *)ptr->data;
|
|
|
|
if (value) {
|
|
tex->imaflag |= TEX_MIPMAP;
|
|
}
|
|
else {
|
|
tex->imaflag &= ~TEX_MIPMAP;
|
|
}
|
|
}
|
|
|
|
#else
|
|
|
|
static void rna_def_texmapping(BlenderRNA *brna)
|
|
{
|
|
static const EnumPropertyItem prop_mapping_items[] = {
|
|
{MTEX_FLAT, "FLAT", 0, "Flat", "Map X and Y coordinates directly"},
|
|
{MTEX_CUBE, "CUBE", 0, "Cube", "Map using the normal vector"},
|
|
{MTEX_TUBE, "TUBE", 0, "Tube", "Map with Z as central axis"},
|
|
{MTEX_SPHERE, "SPHERE", 0, "Sphere", "Map with Z as central axis"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static const EnumPropertyItem prop_xyz_mapping_items[] = {
|
|
{0, "NONE", 0, "None", ""},
|
|
{1, "X", 0, "X", ""},
|
|
{2, "Y", 0, "Y", ""},
|
|
{3, "Z", 0, "Z", ""},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
srna = RNA_def_struct(brna, "TexMapping", NULL);
|
|
RNA_def_struct_ui_text(srna, "Texture Mapping", "Texture coordinate mapping settings");
|
|
|
|
prop = RNA_def_property(srna, "vector_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "type");
|
|
RNA_def_property_enum_items(prop, rna_enum_mapping_type_items);
|
|
RNA_def_property_ui_text(prop, "Type", "Type of vector that the mapping transforms");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "translation", PROP_FLOAT, PROP_TRANSLATION);
|
|
RNA_def_property_float_sdna(prop, NULL, "loc");
|
|
RNA_def_property_ui_text(prop, "Location", "");
|
|
RNA_def_property_ui_range(prop, -FLT_MAX, FLT_MAX, 1, RNA_TRANSLATION_PREC_DEFAULT);
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
/* Not PROP_XYZ, this is now in radians, no more degrees */
|
|
prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_EULER);
|
|
RNA_def_property_float_sdna(prop, NULL, "rot");
|
|
RNA_def_property_ui_text(prop, "Rotation", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
|
|
RNA_def_property_float_sdna(prop, NULL, "size");
|
|
RNA_def_property_flag(prop, PROP_PROPORTIONAL);
|
|
RNA_def_property_ui_text(prop, "Scale", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "min", PROP_FLOAT, PROP_XYZ);
|
|
RNA_def_property_float_sdna(prop, NULL, "min");
|
|
RNA_def_property_ui_text(prop, "Minimum", "Minimum value for clipping");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "max", PROP_FLOAT, PROP_XYZ);
|
|
RNA_def_property_float_sdna(prop, NULL, "max");
|
|
RNA_def_property_ui_text(prop, "Maximum", "Maximum value for clipping");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
|
|
RNA_def_property_ui_text(prop, "Has Minimum", "Whether to use minimum clipping value");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
|
|
RNA_def_property_ui_text(prop, "Has Maximum", "Whether to use maximum clipping value");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "mapping_x", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "projx");
|
|
RNA_def_property_enum_items(prop, prop_xyz_mapping_items);
|
|
RNA_def_property_ui_text(prop, "X Mapping", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "mapping_y", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "projy");
|
|
RNA_def_property_enum_items(prop, prop_xyz_mapping_items);
|
|
RNA_def_property_ui_text(prop, "Y Mapping", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "mapping_z", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "projz");
|
|
RNA_def_property_enum_items(prop, prop_xyz_mapping_items);
|
|
RNA_def_property_ui_text(prop, "Z Mapping", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_items(prop, prop_mapping_items);
|
|
RNA_def_property_ui_text(prop, "Mapping", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_mapping_update");
|
|
}
|
|
|
|
static void rna_def_colormapping(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
srna = RNA_def_struct(brna, "ColorMapping", NULL);
|
|
RNA_def_struct_ui_text(srna, "Color Mapping", "Color mapping settings");
|
|
|
|
prop = RNA_def_property(srna, "use_color_ramp", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", COLORMAP_USE_RAMP);
|
|
RNA_def_property_ui_text(prop, "Use Color Ramp", "Toggle color ramp operations");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "color_ramp", PROP_POINTER, PROP_NEVER_NULL);
|
|
RNA_def_property_pointer_sdna(prop, NULL, "coba");
|
|
RNA_def_property_struct_type(prop, "ColorRamp");
|
|
RNA_def_property_ui_text(prop, "Color Ramp", "");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "brightness", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "bright");
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Brightness", "Adjust the brightness of the texture");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "contrast", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_range(prop, 0.0, 5);
|
|
RNA_def_property_ui_range(prop, 0, 5, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Contrast", "Adjust the contrast of the texture");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Saturation", "Adjust the saturation of colors in the texture");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_items(prop, blend_type_items);
|
|
RNA_def_property_ui_text(prop, "Blend Type", "Mode used to mix with texture output color");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "blend_color", PROP_FLOAT, PROP_COLOR);
|
|
RNA_def_property_array(prop, 3);
|
|
RNA_def_property_ui_text(prop, "Color", "Blend color to mix with texture output color");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
|
|
prop = RNA_def_property(srna, "blend_factor", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_ui_text(prop, "Blend Factor", "");
|
|
RNA_def_property_update(prop, 0, "rna_Color_mapping_update");
|
|
}
|
|
|
|
static void rna_def_mtex(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem output_node_items[] = {
|
|
{0, "DUMMY", 0, "Dummy", ""},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "TextureSlot", NULL);
|
|
RNA_def_struct_sdna(srna, "MTex");
|
|
RNA_def_struct_ui_text(
|
|
srna, "Texture Slot", "Texture slot defining the mapping and influence of a texture");
|
|
RNA_def_struct_path_func(srna, "rna_TextureSlot_path");
|
|
RNA_def_struct_ui_icon(srna, ICON_TEXTURE_DATA);
|
|
|
|
prop = RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE);
|
|
RNA_def_property_pointer_sdna(prop, NULL, "tex");
|
|
RNA_def_property_struct_type(prop, "Texture");
|
|
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
|
RNA_def_property_ui_text(prop, "Texture", "Texture data-block used by this texture slot");
|
|
RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING_LINKS, "rna_TextureSlotTexture_update");
|
|
|
|
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
|
|
RNA_def_property_string_funcs(
|
|
prop, "rna_TextureSlot_name_get", "rna_TextureSlot_name_length", NULL);
|
|
RNA_def_property_ui_text(prop, "Name", "Texture slot name");
|
|
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_struct_name_property(srna, prop);
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
|
|
/* mapping */
|
|
prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_TRANSLATION);
|
|
RNA_def_property_float_sdna(prop, NULL, "ofs");
|
|
RNA_def_property_ui_range(prop, -10, 10, 10, RNA_TRANSLATION_PREC_DEFAULT);
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_ui_text(
|
|
prop, "Offset", "Fine tune of the texture mapping X, Y and Z locations");
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
|
|
prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_XYZ);
|
|
RNA_def_property_float_sdna(prop, NULL, "size");
|
|
RNA_def_property_flag(prop, PROP_PROPORTIONAL | PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_ui_range(prop, -100, 100, 10, 2);
|
|
RNA_def_property_ui_text(prop, "Size", "Set scaling for the texture's X, Y and Z sizes");
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
|
|
prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
|
|
RNA_def_property_float_sdna(prop, NULL, "r");
|
|
RNA_def_property_array(prop, 3);
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_ui_text(
|
|
prop,
|
|
"Color",
|
|
"Default color for textures that don't return RGB or when RGB to intensity is enabled");
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
|
|
prop = RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "blendtype");
|
|
RNA_def_property_enum_items(prop, blend_type_items);
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_ui_text(prop, "Blend Type", "Mode used to apply the texture");
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
|
|
prop = RNA_def_property(srna, "default_value", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "def_var");
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
|
|
RNA_def_property_ui_text(
|
|
prop,
|
|
"Default Value",
|
|
"Value to use for Ref, Spec, Amb, Emit, Alpha, RayMir, TransLu and Hard");
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
|
|
prop = RNA_def_property(srna, "output_node", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "which_output");
|
|
RNA_def_property_enum_items(prop, output_node_items);
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_enum_funcs(
|
|
prop, "rna_TextureSlot_output_node_get", NULL, "rna_TextureSlot_output_node_itemf");
|
|
RNA_def_property_ui_text(
|
|
prop, "Output Node", "Which output node to use, for node-based textures");
|
|
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
|
|
}
|
|
|
|
static void rna_def_filter_common(StructRNA *srna)
|
|
{
|
|
PropertyRNA *prop;
|
|
|
|
prop = RNA_def_property(srna, "use_mipmap", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_MIPMAP);
|
|
RNA_def_property_boolean_funcs(prop, NULL, "rna_ImageTexture_mipmap_set");
|
|
RNA_def_property_ui_text(prop, "MIP Map", "Use auto-generated MIP maps for the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_mipmap_gauss", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_GAUSS_MIP);
|
|
RNA_def_property_ui_text(
|
|
prop, "MIP Map Gaussian filter", "Use Gauss filter to sample down MIP maps");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "filter_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "texfilter");
|
|
RNA_def_property_enum_items(prop, texture_filter_items);
|
|
RNA_def_property_ui_text(prop, "Filter", "Texture filter to use for sampling image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "filter_lightprobes", PROP_INT, PROP_NONE);
|
|
RNA_def_property_int_sdna(prop, NULL, "afmax");
|
|
RNA_def_property_range(prop, 1, 256);
|
|
RNA_def_property_ui_text(
|
|
prop,
|
|
"Filter Probes",
|
|
"Maximum number of samples (higher gives less blur at distant/oblique angles, "
|
|
"but is also slower)");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "filter_eccentricity", PROP_INT, PROP_NONE);
|
|
RNA_def_property_int_sdna(prop, NULL, "afmax");
|
|
RNA_def_property_range(prop, 1, 256);
|
|
RNA_def_property_ui_text(
|
|
prop,
|
|
"Filter Eccentricity",
|
|
"Maximum eccentricity (higher gives less blur at distant/oblique angles, "
|
|
"but is also slower)");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_filter_size_min", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_FILTER_MIN);
|
|
RNA_def_property_ui_text(
|
|
prop, "Minimum Filter Size", "Use Filter Size as a minimal filter value in pixels");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "filter_size", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "filtersize");
|
|
RNA_def_property_range(prop, 0.1, 50.0);
|
|
RNA_def_property_ui_range(prop, 0.1, 50.0, 1, 2);
|
|
RNA_def_property_ui_text(
|
|
prop, "Filter Size", "Multiply the filter size used by MIP Map and Interpolation");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
}
|
|
|
|
static const EnumPropertyItem prop_noise_basis_items[] = {
|
|
{TEX_BLENDER,
|
|
"BLENDER_ORIGINAL",
|
|
0,
|
|
"Blender Original",
|
|
"Noise algorithm - Blender original: Smooth interpolated noise"},
|
|
{TEX_STDPERLIN,
|
|
"ORIGINAL_PERLIN",
|
|
0,
|
|
"Original Perlin",
|
|
"Noise algorithm - Original Perlin: Smooth interpolated noise"},
|
|
{TEX_NEWPERLIN,
|
|
"IMPROVED_PERLIN",
|
|
0,
|
|
"Improved Perlin",
|
|
"Noise algorithm - Improved Perlin: Smooth interpolated noise"},
|
|
{TEX_VORONOI_F1,
|
|
"VORONOI_F1",
|
|
0,
|
|
"Voronoi F1",
|
|
"Noise algorithm - Voronoi F1: Returns distance to the closest feature point"},
|
|
{TEX_VORONOI_F2,
|
|
"VORONOI_F2",
|
|
0,
|
|
"Voronoi F2",
|
|
"Noise algorithm - Voronoi F2: Returns distance to the 2nd closest feature point"},
|
|
{TEX_VORONOI_F3,
|
|
"VORONOI_F3",
|
|
0,
|
|
"Voronoi F3",
|
|
"Noise algorithm - Voronoi F3: Returns distance to the 3rd closest feature point"},
|
|
{TEX_VORONOI_F4,
|
|
"VORONOI_F4",
|
|
0,
|
|
"Voronoi F4",
|
|
"Noise algorithm - Voronoi F4: Returns distance to the 4th closest feature point"},
|
|
{TEX_VORONOI_F2F1, "VORONOI_F2_F1", 0, "Voronoi F2-F1", "Noise algorithm - Voronoi F1-F2"},
|
|
{TEX_VORONOI_CRACKLE,
|
|
"VORONOI_CRACKLE",
|
|
0,
|
|
"Voronoi Crackle",
|
|
"Noise algorithm - Voronoi Crackle: Voronoi tessellation with sharp edges"},
|
|
{TEX_CELLNOISE,
|
|
"CELL_NOISE",
|
|
0,
|
|
"Cell Noise",
|
|
"Noise algorithm - Cell Noise: Square cell tessellation"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static const EnumPropertyItem prop_noise_type[] = {
|
|
{TEX_NOISESOFT, "SOFT_NOISE", 0, "Soft", "Generate soft noise (smooth transitions)"},
|
|
{TEX_NOISEPERL, "HARD_NOISE", 0, "Hard", "Generate hard noise (sharp transitions)"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static void rna_def_texture_clouds(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_clouds_stype[] = {
|
|
{TEX_DEFAULT, "GRAYSCALE", 0, "Grayscale", ""},
|
|
{TEX_COLOR, "COLOR", 0, "Color", ""},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "CloudsTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Clouds 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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "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, 30);
|
|
RNA_def_property_ui_range(prop, 0, 24, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Depth", "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", "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, "cloud_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "stype");
|
|
RNA_def_property_enum_items(prop, prop_clouds_stype);
|
|
RNA_def_property_ui_text(
|
|
prop, "Color", "Determine whether Noise returns grayscale or RGB values");
|
|
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;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_wood_stype[] = {
|
|
{TEX_BAND, "BANDS", 0, "Bands", "Use standard wood texture in bands"},
|
|
{TEX_RING, "RINGS", 0, "Rings", "Use wood texture in rings"},
|
|
{TEX_BANDNOISE, "BANDNOISE", 0, "Band Noise", "Add noise to standard wood"},
|
|
{TEX_RINGNOISE, "RINGNOISE", 0, "Ring Noise", "Add noise to rings"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static const EnumPropertyItem prop_wood_noisebasis2[] = {
|
|
{TEX_SIN, "SIN", 0, "Sine", "Use a sine wave to produce bands"},
|
|
{TEX_SAW, "SAW", 0, "Saw", "Use a saw wave to produce bands"},
|
|
{TEX_TRI, "TRI", 0, "Tri", "Use a triangle wave to produce bands"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "WoodTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Wood 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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "Scaling for noise input");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "turbulence", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "turbul");
|
|
RNA_def_property_range(prop, 0.0001, FLT_MAX);
|
|
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
|
|
RNA_def_property_ui_text(prop, "Turbulence", "Turbulence of the bandnoise and ringnoise types");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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", "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, "wood_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "stype");
|
|
RNA_def_property_enum_items(prop, prop_wood_stype);
|
|
RNA_def_property_ui_text(prop, "Pattern", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
|
|
|
|
prop = RNA_def_property(srna, "noise_basis_2", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
|
|
RNA_def_property_enum_items(prop, prop_wood_noisebasis2);
|
|
RNA_def_property_ui_text(prop, "Noise Basis 2", "");
|
|
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_marble(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_marble_stype[] = {
|
|
{TEX_SOFT, "SOFT", 0, "Soft", "Use soft marble"},
|
|
{TEX_SHARP, "SHARP", 0, "Sharp", "Use more clearly defined marble"},
|
|
{TEX_SHARPER, "SHARPER", 0, "Sharper", "Use very clearly defined marble"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static const EnumPropertyItem prop_marble_noisebasis2[] = {
|
|
{TEX_SIN, "SIN", 0, "Sin", "Use a sine wave to produce bands"},
|
|
{TEX_SAW, "SAW", 0, "Saw", "Use a saw wave to produce bands"},
|
|
{TEX_TRI, "TRI", 0, "Tri", "Use a triangle wave to produce bands"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "MarbleTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Marble 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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "Scaling for noise input");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "turbulence", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "turbul");
|
|
RNA_def_property_range(prop, 0.0001, FLT_MAX);
|
|
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
|
|
RNA_def_property_ui_text(prop, "Turbulence", "Turbulence of the bandnoise and ringnoise types");
|
|
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, 30);
|
|
RNA_def_property_ui_range(prop, 0, 24, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Depth", "Depth of the cloud calculation");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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, "marble_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "stype");
|
|
RNA_def_property_enum_items(prop, prop_marble_stype);
|
|
RNA_def_property_ui_text(prop, "Pattern", "");
|
|
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", "Noise basis used for turbulence");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
|
|
|
|
prop = RNA_def_property(srna, "noise_basis_2", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
|
|
RNA_def_property_enum_items(prop, prop_marble_noisebasis2);
|
|
RNA_def_property_ui_text(prop, "Noise Basis 2", "");
|
|
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_magic(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
srna = RNA_def_struct(brna, "MagicTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Magic Texture", "Procedural noise texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "turbulence", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "turbul");
|
|
RNA_def_property_range(prop, 0.0001, FLT_MAX);
|
|
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
|
|
RNA_def_property_ui_text(prop, "Turbulence", "Turbulence of the noise");
|
|
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, 30);
|
|
RNA_def_property_ui_range(prop, 0, 24, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Depth", "Depth of the noise");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
}
|
|
|
|
static void rna_def_texture_blend(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_blend_progression[] = {
|
|
{TEX_LIN, "LINEAR", 0, "Linear", "Create a linear progression"},
|
|
{TEX_QUAD, "QUADRATIC", 0, "Quadratic", "Create a quadratic progression"},
|
|
{TEX_EASE, "EASING", 0, "Easing", "Create a progression easing from one step to the next"},
|
|
{TEX_DIAG, "DIAGONAL", 0, "Diagonal", "Create a diagonal progression"},
|
|
{TEX_SPHERE, "SPHERICAL", 0, "Spherical", "Create a spherical progression"},
|
|
{TEX_HALO,
|
|
"QUADRATIC_SPHERE",
|
|
0,
|
|
"Quadratic Sphere",
|
|
"Create a quadratic progression in the shape of a sphere"},
|
|
{TEX_RAD, "RADIAL", 0, "Radial", "Create a radial progression"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static const EnumPropertyItem prop_flip_axis_items[] = {
|
|
{0, "HORIZONTAL", 0, "Horizontal", "No flipping"},
|
|
{TEX_FLIPBLEND, "VERTICAL", 0, "Vertical", "Flip the texture's X and Y axis"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "BlendTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Blend Texture", "Procedural color blending texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "progression", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "stype");
|
|
RNA_def_property_enum_items(prop, prop_blend_progression);
|
|
RNA_def_property_ui_text(prop, "Progression", "Style of the color blending");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
|
|
|
|
prop = RNA_def_property(srna, "use_flip_axis", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
|
|
RNA_def_property_enum_items(prop, prop_flip_axis_items);
|
|
RNA_def_property_ui_text(prop, "Flip Axis", "Flip the texture's X and Y axis");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
|
|
}
|
|
|
|
static void rna_def_texture_stucci(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_stucci_stype[] = {
|
|
{TEX_PLASTIC, "PLASTIC", 0, "Plastic", "Use standard stucci"},
|
|
{TEX_WALLIN, "WALL_IN", 0, "Wall In", "Create Dimples"},
|
|
{TEX_WALLOUT, "WALL_OUT", 0, "Wall Out", "Create Ridges"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "StucciTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Stucci Texture", "Procedural noise texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "turbulence", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "turbul");
|
|
RNA_def_property_range(prop, 0.0001, FLT_MAX);
|
|
RNA_def_property_ui_range(prop, 0.0001, 200, 10, 2);
|
|
RNA_def_property_ui_text(prop, "Turbulence", "Turbulence of the noise");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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", "Noise basis used for turbulence");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "Scaling for noise input");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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_update");
|
|
|
|
prop = RNA_def_property(srna, "stucci_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "stype");
|
|
RNA_def_property_enum_items(prop, prop_stucci_stype);
|
|
RNA_def_property_ui_text(prop, "Pattern", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
}
|
|
|
|
static void rna_def_texture_noise(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
|
|
srna = RNA_def_struct(brna, "NoiseTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Noise Texture", "Procedural noise texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
}
|
|
|
|
static void rna_def_texture_image(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_image_extension[] = {
|
|
{TEX_EXTEND, "EXTEND", 0, "Extend", "Extend by repeating edge pixels of the image"},
|
|
{TEX_CLIP, "CLIP", 0, "Clip", "Clip to image size and set exterior pixels as transparent"},
|
|
{TEX_CLIPCUBE,
|
|
"CLIP_CUBE",
|
|
0,
|
|
"Clip Cube",
|
|
"Clip to cubic-shaped area around the image and set exterior pixels as transparent"},
|
|
{TEX_REPEAT, "REPEAT", 0, "Repeat", "Cause the image to repeat horizontally and vertically"},
|
|
{TEX_CHECKER, "CHECKER", 0, "Checker", "Cause the image to repeat in checker board pattern"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "ImageTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Image Texture", "");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "use_interpolation", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_INTERPOL);
|
|
RNA_def_property_ui_text(prop, "Interpolation", "Interpolate pixels using selected filter");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
/* XXX: I think flip_axis should be a generic Texture property,
|
|
* enabled for all the texture types. */
|
|
prop = RNA_def_property(srna, "use_flip_axis", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_IMAROT);
|
|
RNA_def_property_ui_text(prop, "Flip Axis", "Flip the texture's X and Y axis");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_alpha", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_USEALPHA);
|
|
RNA_def_property_ui_text(prop, "Use Alpha", "Use the alpha channel information in the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_calculate_alpha", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_CALCALPHA);
|
|
RNA_def_property_ui_text(
|
|
prop, "Calculate Alpha", "Calculate an alpha channel based on RGB values in the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "invert_alpha", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_NEGALPHA);
|
|
RNA_def_property_ui_text(prop, "Invert Alpha", "Invert all the alpha values in the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
rna_def_filter_common(srna);
|
|
|
|
prop = RNA_def_property(srna, "extension", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "extend");
|
|
RNA_def_property_enum_items(prop, prop_image_extension);
|
|
RNA_def_property_ui_text(
|
|
prop, "Extension", "How the image is extrapolated past its original bounds");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "repeat_x", PROP_INT, PROP_NONE);
|
|
RNA_def_property_int_sdna(prop, NULL, "xrepeat");
|
|
RNA_def_property_range(prop, 1, 512);
|
|
RNA_def_property_ui_text(prop, "Repeat X", "Repetition multiplier in the X direction");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "repeat_y", PROP_INT, PROP_NONE);
|
|
RNA_def_property_int_sdna(prop, NULL, "yrepeat");
|
|
RNA_def_property_range(prop, 1, 512);
|
|
RNA_def_property_ui_text(prop, "Repeat Y", "Repetition multiplier in the Y direction");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_mirror_x", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_REPEAT_XMIR);
|
|
RNA_def_property_ui_text(prop, "Mirror X", "Mirror the image repetition on the X direction");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_mirror_y", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_REPEAT_YMIR);
|
|
RNA_def_property_ui_text(prop, "Mirror Y", "Mirror the image repetition on the Y direction");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_checker_odd", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_CHECKER_ODD);
|
|
RNA_def_property_ui_text(prop, "Checker Odd", "Odd checker tiles");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_checker_even", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_CHECKER_EVEN);
|
|
RNA_def_property_ui_text(prop, "Checker Even", "Even checker tiles");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "checker_distance", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "checkerdist");
|
|
RNA_def_property_range(prop, 0.0, 0.99);
|
|
RNA_def_property_ui_range(prop, 0.0, 0.99, 0.1, 2);
|
|
RNA_def_property_ui_text(prop, "Checker Distance", "Distance between checker tiles");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
# if 0
|
|
|
|
/* XXX: did this as an array, but needs better descriptions than "1 2 3 4"
|
|
* perhaps a new subtype could be added?
|
|
* --I actually used single values for this, maybe change later with a RNA_Rect thing? */
|
|
prop = RNA_def_property(srna, "crop_rectangle", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "cropxmin");
|
|
RNA_def_property_array(prop, 4);
|
|
RNA_def_property_range(prop, -10, 10);
|
|
RNA_def_property_ui_text(prop, "Crop Rectangle", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
# endif
|
|
|
|
prop = RNA_def_property(srna, "crop_min_x", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "cropxmin");
|
|
RNA_def_property_range(prop, -10.0, 10.0);
|
|
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Crop Minimum X", "Minimum X value to crop the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "crop_min_y", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "cropymin");
|
|
RNA_def_property_range(prop, -10.0, 10.0);
|
|
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Crop Minimum Y", "Minimum Y value to crop the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "crop_max_x", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "cropxmax");
|
|
RNA_def_property_range(prop, -10.0, 10.0);
|
|
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Crop Maximum X", "Maximum X value to crop the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "crop_max_y", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "cropymax");
|
|
RNA_def_property_range(prop, -10.0, 10.0);
|
|
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Crop Maximum Y", "Maximum Y value to crop the image");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
|
|
RNA_def_property_pointer_sdna(prop, NULL, "ima");
|
|
RNA_def_property_struct_type(prop, "Image");
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
|
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
|
RNA_def_property_ui_text(prop, "Image", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "image_user", PROP_POINTER, PROP_NEVER_NULL);
|
|
RNA_def_property_pointer_sdna(prop, NULL, "iuser");
|
|
RNA_def_property_ui_text(
|
|
prop,
|
|
"Image User",
|
|
"Parameters defining which layer, pass and frame of the image is displayed");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
/* Normal Map */
|
|
prop = RNA_def_property(srna, "use_normal_map", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_NORMALMAP);
|
|
RNA_def_property_ui_text(prop, "Normal Map", "Use image RGB values for normal mapping");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
}
|
|
|
|
static void rna_def_texture_musgrave(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_musgrave_type[] = {
|
|
{TEX_MFRACTAL, "MULTIFRACTAL", 0, "Multifractal", "Use Perlin noise as a basis"},
|
|
{TEX_RIDGEDMF,
|
|
"RIDGED_MULTIFRACTAL",
|
|
0,
|
|
"Ridged Multifractal",
|
|
"Use Perlin noise with inflection as a basis"},
|
|
{TEX_HYBRIDMF,
|
|
"HYBRID_MULTIFRACTAL",
|
|
0,
|
|
"Hybrid Multifractal",
|
|
"Use Perlin noise as a basis, with extended controls"},
|
|
{TEX_FBM, "FBM", 0, "fBM", "Fractal Brownian Motion, use Brownian noise as a basis"},
|
|
{TEX_HTERRAIN, "HETERO_TERRAIN", 0, "Hetero Terrain", "Similar to multifractal"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "MusgraveTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Musgrave", "Procedural musgrave texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "musgrave_type", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "stype");
|
|
RNA_def_property_enum_items(prop, prop_musgrave_type);
|
|
RNA_def_property_ui_text(prop, "Type", "Fractal noise algorithm");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "dimension_max", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "mg_H");
|
|
RNA_def_property_range(prop, 0.0001, 2);
|
|
RNA_def_property_ui_range(prop, 0.0001, 2, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Highest Dimension", "Highest fractal dimension");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "lacunarity", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "mg_lacunarity");
|
|
RNA_def_property_range(prop, 0, 6);
|
|
RNA_def_property_ui_range(prop, 0, 6, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Lacunarity", "Gap between successive frequencies");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "octaves", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "mg_octaves");
|
|
RNA_def_property_range(prop, 0, 8);
|
|
RNA_def_property_ui_range(prop, 0, 8, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Octaves", "Number of frequencies used");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "mg_offset");
|
|
RNA_def_property_range(prop, 0, 6);
|
|
RNA_def_property_ui_range(prop, 0, 6, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Offset", "The fractal offset");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "gain", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "mg_gain");
|
|
RNA_def_property_range(prop, 0, 6);
|
|
RNA_def_property_ui_range(prop, 0, 6, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Gain", "The gain multiplier");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "noise_intensity", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "ns_outscale");
|
|
RNA_def_property_range(prop, 0, 10);
|
|
RNA_def_property_ui_range(prop, 0, 10, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Intensity", "Intensity of the noise");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "Scaling for noise input");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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", "Noise basis used for turbulence");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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_voronoi(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
static const EnumPropertyItem prop_distance_metric_items[] = {
|
|
{TEX_DISTANCE, "DISTANCE", 0, "Actual Distance", "sqrt(x*x+y*y+z*z)"},
|
|
{TEX_DISTANCE_SQUARED, "DISTANCE_SQUARED", 0, "Distance Squared", "(x*x+y*y+z*z)"},
|
|
{TEX_MANHATTAN,
|
|
"MANHATTAN",
|
|
0,
|
|
"Manhattan",
|
|
"The length of the distance in axial directions"},
|
|
{TEX_CHEBYCHEV, "CHEBYCHEV", 0, "Chebychev", "The length of the longest Axial journey"},
|
|
{TEX_MINKOVSKY_HALF, "MINKOVSKY_HALF", 0, "Minkowski 1/2", "Set Minkowski variable to 0.5"},
|
|
{TEX_MINKOVSKY_FOUR, "MINKOVSKY_FOUR", 0, "Minkowski 4", "Set Minkowski variable to 4"},
|
|
{TEX_MINKOVSKY,
|
|
"MINKOVSKY",
|
|
0,
|
|
"Minkowski",
|
|
"Use the Minkowski function to calculate distance "
|
|
"(exponent value determines the shape of the boundaries)"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
static const EnumPropertyItem prop_coloring_items[] = {
|
|
/* XXX: OK names / descriptions? */
|
|
{TEX_INTENSITY, "INTENSITY", 0, "Intensity", "Only calculate intensity"},
|
|
{TEX_COL1, "POSITION", 0, "Position", "Color cells by position"},
|
|
{TEX_COL2,
|
|
"POSITION_OUTLINE",
|
|
0,
|
|
"Position and Outline",
|
|
"Use position plus an outline based on F2-F1"},
|
|
{TEX_COL3,
|
|
"POSITION_OUTLINE_INTENSITY",
|
|
0,
|
|
"Position, Outline, and Intensity",
|
|
"Multiply position and outline by intensity"},
|
|
{0, NULL, 0, NULL, NULL},
|
|
};
|
|
|
|
srna = RNA_def_struct(brna, "VoronoiTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Voronoi", "Procedural voronoi texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "weight_1", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "vn_w1");
|
|
RNA_def_property_range(prop, -2, 2);
|
|
RNA_def_property_ui_text(prop, "Weight 1", "Voronoi feature weight 1");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "weight_2", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "vn_w2");
|
|
RNA_def_property_range(prop, -2, 2);
|
|
RNA_def_property_ui_text(prop, "Weight 2", "Voronoi feature weight 2");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "weight_3", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "vn_w3");
|
|
RNA_def_property_range(prop, -2, 2);
|
|
RNA_def_property_ui_text(prop, "Weight 3", "Voronoi feature weight 3");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "weight_4", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "vn_w4");
|
|
RNA_def_property_range(prop, -2, 2);
|
|
RNA_def_property_ui_text(prop, "Weight 4", "Voronoi feature weight 4");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "minkovsky_exponent", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "vn_mexp");
|
|
RNA_def_property_range(prop, 0.01, 10);
|
|
RNA_def_property_ui_text(prop, "Minkowski Exponent", "Minkowski exponent");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "distance_metric", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "vn_distm");
|
|
RNA_def_property_enum_items(prop, prop_distance_metric_items);
|
|
RNA_def_property_ui_text(
|
|
prop,
|
|
"Distance Metric",
|
|
"Algorithm used to calculate distance of sample points to feature points");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "color_mode", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "vn_coltype");
|
|
RNA_def_property_enum_items(prop, prop_coloring_items);
|
|
RNA_def_property_ui_text(prop, "Coloring", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "noise_intensity", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "ns_outscale");
|
|
RNA_def_property_range(prop, 0.01, 10);
|
|
RNA_def_property_ui_text(prop, "Noise Intensity", "Scales the intensity of the noise");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "Scaling for noise input");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_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_distorted_noise(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
srna = RNA_def_struct(brna, "DistortedNoiseTexture", "Texture");
|
|
RNA_def_struct_ui_text(srna, "Distorted Noise", "Procedural distorted noise texture");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
|
|
prop = RNA_def_property(srna, "distortion", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "dist_amount");
|
|
RNA_def_property_range(prop, 0, 10);
|
|
RNA_def_property_ui_text(prop, "Distortion Amount", "Amount of distortion");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
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, 1, 2);
|
|
RNA_def_property_ui_text(prop, "Noise Size", "Scaling for noise input");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "noise_basis", PROP_ENUM, PROP_NONE);
|
|
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
|
|
RNA_def_property_enum_items(prop, prop_noise_basis_items);
|
|
RNA_def_property_ui_text(prop, "Noise Basis", "Noise basis used for turbulence");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
|
|
|
|
prop = RNA_def_property(srna, "noise_distortion", 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 Distortion", "Noise basis for the distortion");
|
|
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(BlenderRNA *brna)
|
|
{
|
|
StructRNA *srna;
|
|
PropertyRNA *prop;
|
|
|
|
srna = RNA_def_struct(brna, "Texture", "ID");
|
|
RNA_def_struct_sdna(srna, "Tex");
|
|
RNA_def_struct_ui_text(
|
|
srna, "Texture", "Texture data-block used by materials, lights, worlds and brushes");
|
|
RNA_def_struct_ui_icon(srna, ICON_TEXTURE_DATA);
|
|
RNA_def_struct_refine_func(srna, "rna_Texture_refine");
|
|
|
|
prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
|
|
/*RNA_def_property_clear_flag(prop, PROP_EDITABLE); */
|
|
RNA_def_property_enum_sdna(prop, NULL, "type");
|
|
RNA_def_property_enum_items(prop, rna_enum_texture_type_items);
|
|
RNA_def_property_enum_funcs(prop, NULL, "rna_Texture_type_set", NULL);
|
|
RNA_def_property_ui_text(prop, "Type", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", TEX_NO_CLAMP);
|
|
RNA_def_property_ui_text(prop,
|
|
"Clamp",
|
|
"Set negative texture RGB and intensity values to zero, for some uses "
|
|
"like displacement this option can be disabled to get the full range");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "use_color_ramp", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_COLORBAND);
|
|
RNA_def_property_boolean_funcs(prop, NULL, "rna_Texture_use_color_ramp_set");
|
|
RNA_def_property_ui_text(prop,
|
|
"Use Color Ramp",
|
|
"Map the texture intensity to the color ramp. "
|
|
"Note that the alpha value is used for image textures, "
|
|
"enable \"Calculate Alpha\" for images without an alpha channel");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "color_ramp", PROP_POINTER, PROP_NEVER_NULL);
|
|
RNA_def_property_pointer_sdna(prop, NULL, "coba");
|
|
RNA_def_property_struct_type(prop, "ColorRamp");
|
|
RNA_def_property_ui_text(prop, "Color Ramp", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "intensity", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "bright");
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Brightness", "Adjust the brightness of the texture");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "contrast", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_range(prop, 0.0, 5);
|
|
RNA_def_property_ui_range(prop, 0, 5, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Contrast", "Adjust the contrast of the texture");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "saturation", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Saturation", "Adjust the saturation of colors in the texture");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
/* RGB Factor */
|
|
prop = RNA_def_property(srna, "factor_red", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "rfac");
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Factor Red", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "factor_green", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "gfac");
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Factor Green", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
prop = RNA_def_property(srna, "factor_blue", PROP_FLOAT, PROP_NONE);
|
|
RNA_def_property_float_sdna(prop, NULL, "bfac");
|
|
RNA_def_property_range(prop, 0, 2);
|
|
RNA_def_property_ui_range(prop, 0, 2, 1, 3);
|
|
RNA_def_property_ui_text(prop, "Factor Blue", "");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
/* Alpha for preview render */
|
|
prop = RNA_def_property(srna, "use_preview_alpha", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_PRV_ALPHA);
|
|
RNA_def_property_ui_text(prop, "Show Alpha", "Show Alpha in Preview Render");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_update");
|
|
|
|
/* nodetree */
|
|
prop = RNA_def_property(srna, "use_nodes", PROP_BOOLEAN, PROP_NONE);
|
|
RNA_def_property_boolean_sdna(prop, NULL, "use_nodes", 1);
|
|
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
|
RNA_def_property_ui_text(prop, "Use Nodes", "Make this a node-based texture");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_use_nodes_update");
|
|
|
|
prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE);
|
|
RNA_def_property_pointer_sdna(prop, NULL, "nodetree");
|
|
RNA_def_property_clear_flag(prop, PROP_PTR_NO_OWNERSHIP);
|
|
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
|
|
RNA_def_property_ui_text(prop, "Node Tree", "Node tree for node-based textures");
|
|
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
|
|
|
|
rna_def_animdata_common(srna);
|
|
|
|
/* specific types */
|
|
rna_def_texture_clouds(brna);
|
|
rna_def_texture_wood(brna);
|
|
rna_def_texture_marble(brna);
|
|
rna_def_texture_magic(brna);
|
|
rna_def_texture_blend(brna);
|
|
rna_def_texture_stucci(brna);
|
|
rna_def_texture_noise(brna);
|
|
rna_def_texture_image(brna);
|
|
rna_def_texture_musgrave(brna);
|
|
rna_def_texture_voronoi(brna);
|
|
rna_def_texture_distorted_noise(brna);
|
|
/* XXX add more types here. */
|
|
|
|
RNA_api_texture(srna);
|
|
}
|
|
|
|
void RNA_def_texture(BlenderRNA *brna)
|
|
{
|
|
rna_def_texture(brna);
|
|
rna_def_mtex(brna);
|
|
rna_def_texmapping(brna);
|
|
rna_def_colormapping(brna);
|
|
}
|
|
|
|
#endif
|