Nodes: add cycles shader nodes, these will only be available to render engines
that use the new shading nodes system. Documentation: http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes
This commit is contained in:
@@ -456,6 +456,40 @@ struct ShadeResult;
|
||||
#define SH_NODE_HUE_SAT 122
|
||||
#define NODE_DYNAMIC 123
|
||||
|
||||
#define SH_NODE_OUTPUT_MATERIAL 124
|
||||
#define SH_NODE_OUTPUT_WORLD 125
|
||||
#define SH_NODE_OUTPUT_LAMP 126
|
||||
#define SH_NODE_FRESNEL 127
|
||||
#define SH_NODE_MIX_SHADER 128
|
||||
#define SH_NODE_ATTRIBUTE 129
|
||||
#define SH_NODE_BACKGROUND 130
|
||||
#define SH_NODE_BSDF_ANISOTROPIC 131
|
||||
#define SH_NODE_BSDF_DIFFUSE 132
|
||||
#define SH_NODE_BSDF_GLOSSY 133
|
||||
#define SH_NODE_BSDF_GLASS 134
|
||||
#define SH_NODE_BSDF_TRANSLUCENT 137
|
||||
#define SH_NODE_BSDF_TRANSPARENT 138
|
||||
#define SH_NODE_BSDF_VELVET 139
|
||||
#define SH_NODE_EMISSION 140
|
||||
#define SH_NODE_NEW_GEOMETRY 141
|
||||
#define SH_NODE_LIGHT_PATH 142
|
||||
#define SH_NODE_TEX_IMAGE 143
|
||||
#define SH_NODE_TEX_SKY 145
|
||||
#define SH_NODE_TEX_GRADIENT 146
|
||||
#define SH_NODE_TEX_VORONOI 147
|
||||
#define SH_NODE_TEX_MAGIC 148
|
||||
#define SH_NODE_TEX_WAVE 149
|
||||
#define SH_NODE_TEX_NOISE 150
|
||||
#define SH_NODE_TEX_MUSGRAVE 152
|
||||
#define SH_NODE_TEX_COORD 155
|
||||
#define SH_NODE_ADD_SHADER 156
|
||||
#define SH_NODE_TEX_ENVIRONMENT 157
|
||||
#define SH_NODE_OUTPUT_TEXTURE 158
|
||||
#define SH_NODE_HOLDOUT 159
|
||||
#define SH_NODE_LAYER_WEIGHT 160
|
||||
#define SH_NODE_VOLUME_TRANSPARENT 161
|
||||
#define SH_NODE_VOLUME_ISOTROPIC 162
|
||||
|
||||
/* custom defines options for Material node */
|
||||
#define SH_NODE_MAT_DIFF 1
|
||||
#define SH_NODE_MAT_SPEC 2
|
||||
|
||||
@@ -1865,13 +1865,18 @@ static void registerShaderNodes(ListBase *ntypelist)
|
||||
register_node_type_frame(ntypelist);
|
||||
|
||||
register_node_type_sh_group(ntypelist);
|
||||
// register_node_type_sh_forloop(ntypelist);
|
||||
// register_node_type_sh_whileloop(ntypelist);
|
||||
|
||||
//register_node_type_sh_forloop(ntypelist);
|
||||
//register_node_type_sh_whileloop(ntypelist);
|
||||
|
||||
register_node_type_sh_output(ntypelist);
|
||||
register_node_type_sh_material(ntypelist);
|
||||
register_node_type_sh_camera(ntypelist);
|
||||
register_node_type_sh_value(ntypelist);
|
||||
register_node_type_sh_rgb(ntypelist);
|
||||
register_node_type_sh_mix_rgb(ntypelist);
|
||||
register_node_type_sh_valtorgb(ntypelist);
|
||||
register_node_type_sh_rgbtobw(ntypelist);
|
||||
register_node_type_sh_texture(ntypelist);
|
||||
register_node_type_sh_normal(ntypelist);
|
||||
register_node_type_sh_geom(ntypelist);
|
||||
register_node_type_sh_mapping(ntypelist);
|
||||
@@ -1880,17 +1885,47 @@ static void registerShaderNodes(ListBase *ntypelist)
|
||||
register_node_type_sh_math(ntypelist);
|
||||
register_node_type_sh_vect_math(ntypelist);
|
||||
register_node_type_sh_squeeze(ntypelist);
|
||||
register_node_type_sh_camera(ntypelist);
|
||||
register_node_type_sh_material(ntypelist);
|
||||
//register_node_type_sh_dynamic(ntypelist);
|
||||
register_node_type_sh_material_ext(ntypelist);
|
||||
register_node_type_sh_value(ntypelist);
|
||||
register_node_type_sh_rgb(ntypelist);
|
||||
register_node_type_sh_texture(ntypelist);
|
||||
// register_node_type_sh_dynamic(ntypelist);
|
||||
register_node_type_sh_invert(ntypelist);
|
||||
register_node_type_sh_seprgb(ntypelist);
|
||||
register_node_type_sh_combrgb(ntypelist);
|
||||
register_node_type_sh_hue_sat(ntypelist);
|
||||
|
||||
register_node_type_sh_attribute(ntypelist);
|
||||
register_node_type_sh_geometry(ntypelist);
|
||||
register_node_type_sh_light_path(ntypelist);
|
||||
register_node_type_sh_fresnel(ntypelist);
|
||||
register_node_type_sh_layer_weight(ntypelist);
|
||||
register_node_type_sh_tex_coord(ntypelist);
|
||||
|
||||
register_node_type_sh_background(ntypelist);
|
||||
register_node_type_sh_bsdf_diffuse(ntypelist);
|
||||
register_node_type_sh_bsdf_glossy(ntypelist);
|
||||
register_node_type_sh_bsdf_glass(ntypelist);
|
||||
register_node_type_sh_bsdf_translucent(ntypelist);
|
||||
register_node_type_sh_bsdf_transparent(ntypelist);
|
||||
register_node_type_sh_bsdf_velvet(ntypelist);
|
||||
register_node_type_sh_emission(ntypelist);
|
||||
register_node_type_sh_holdout(ntypelist);
|
||||
//register_node_type_sh_volume_transparent(ntypelist);
|
||||
//register_node_type_sh_volume_isotropic(ntypelist);
|
||||
register_node_type_sh_mix_shader(ntypelist);
|
||||
register_node_type_sh_add_shader(ntypelist);
|
||||
|
||||
register_node_type_sh_output_lamp(ntypelist);
|
||||
register_node_type_sh_output_material(ntypelist);
|
||||
register_node_type_sh_output_world(ntypelist);
|
||||
|
||||
register_node_type_sh_tex_image(ntypelist);
|
||||
register_node_type_sh_tex_environment(ntypelist);
|
||||
register_node_type_sh_tex_sky(ntypelist);
|
||||
register_node_type_sh_tex_noise(ntypelist);
|
||||
register_node_type_sh_tex_wave(ntypelist);
|
||||
register_node_type_sh_tex_voronoi(ntypelist);
|
||||
register_node_type_sh_tex_musgrave(ntypelist);
|
||||
register_node_type_sh_tex_gradient(ntypelist);
|
||||
register_node_type_sh_tex_magic(ntypelist);
|
||||
}
|
||||
|
||||
static void registerTextureNodes(ListBase *ntypelist)
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_sca.h"
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_speaker.h"
|
||||
#include "BKE_texture.h"
|
||||
|
||||
@@ -92,6 +93,7 @@
|
||||
#include "ED_curve.h"
|
||||
#include "ED_mball.h"
|
||||
#include "ED_mesh.h"
|
||||
#include "ED_node.h"
|
||||
#include "ED_object.h"
|
||||
#include "ED_render.h"
|
||||
#include "ED_screen.h"
|
||||
@@ -322,6 +324,7 @@ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int en
|
||||
/* more editor stuff */
|
||||
ED_object_base_init_transform(C, BASACT, loc, rot);
|
||||
|
||||
DAG_id_type_tag(bmain, ID_OB);
|
||||
DAG_scene_sort(bmain, scene);
|
||||
ED_render_id_flush_update(bmain, ob->data);
|
||||
|
||||
@@ -700,7 +703,9 @@ static const char *get_lamp_defname(int type)
|
||||
|
||||
static int object_lamp_add_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Object *ob;
|
||||
Lamp *la;
|
||||
int type= RNA_enum_get(op->ptr, "type");
|
||||
int enter_editmode;
|
||||
unsigned int layer;
|
||||
@@ -711,9 +716,16 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer);
|
||||
((Lamp*)ob->data)->type= type;
|
||||
rename_id((ID *)ob, get_lamp_defname(type));
|
||||
rename_id((ID *)ob->data, get_lamp_defname(type));
|
||||
la= (Lamp*)ob->data;
|
||||
|
||||
la->type= type;
|
||||
rename_id(&ob->id, get_lamp_defname(type));
|
||||
rename_id(&la->id, get_lamp_defname(type));
|
||||
|
||||
if(scene_use_new_shading_nodes(scene)) {
|
||||
ED_node_shader_default(scene, &la->id);
|
||||
la->use_nodes= 1;
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
@@ -994,6 +994,54 @@ static void node_shader_buts_geometry(uiLayout *layout, bContext *C, PointerRNA
|
||||
}
|
||||
}
|
||||
|
||||
static void node_shader_buts_attribute(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "attribute_name", 0, "Name", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
||||
{
|
||||
//uiItemR(layout, ptr, "image", 0, "", ICON_NONE);
|
||||
uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL);
|
||||
uiItemR(layout, ptr, "color_space", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_sky(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "sun_direction", 0, "", ICON_NONE);
|
||||
uiItemR(layout, ptr, "turbidity", 0, NULL, ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_gradient(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "gradient_type", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_magic(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "turbulence_depth", 0, NULL, ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_wave(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "wave_type", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_musgrave(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "musgrave_type", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_tex_voronoi(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "coloring", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_glossy(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
||||
{
|
||||
uiItemR(layout, ptr, "distribution", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
static void node_shader_buts_dynamic(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
@@ -1080,6 +1128,37 @@ static void node_shader_set_butfunc(bNodeType *ntype)
|
||||
case SH_NODE_GEOMETRY:
|
||||
ntype->uifunc= node_shader_buts_geometry;
|
||||
break;
|
||||
case SH_NODE_ATTRIBUTE:
|
||||
ntype->uifunc= node_shader_buts_attribute;
|
||||
break;
|
||||
case SH_NODE_TEX_SKY:
|
||||
ntype->uifunc= node_shader_buts_tex_sky;
|
||||
break;
|
||||
case SH_NODE_TEX_IMAGE:
|
||||
ntype->uifunc= node_shader_buts_tex_image;
|
||||
break;
|
||||
case SH_NODE_TEX_ENVIRONMENT:
|
||||
ntype->uifunc= node_shader_buts_tex_image;
|
||||
break;
|
||||
case SH_NODE_TEX_GRADIENT:
|
||||
ntype->uifunc= node_shader_buts_tex_gradient;
|
||||
break;
|
||||
case SH_NODE_TEX_MAGIC:
|
||||
ntype->uifunc= node_shader_buts_tex_magic;
|
||||
break;
|
||||
case SH_NODE_TEX_WAVE:
|
||||
ntype->uifunc= node_shader_buts_tex_wave;
|
||||
break;
|
||||
case SH_NODE_TEX_MUSGRAVE:
|
||||
ntype->uifunc= node_shader_buts_tex_musgrave;
|
||||
break;
|
||||
case SH_NODE_TEX_VORONOI:
|
||||
ntype->uifunc= node_shader_buts_tex_voronoi;
|
||||
break;
|
||||
case SH_NODE_BSDF_GLOSSY:
|
||||
case SH_NODE_BSDF_GLASS:
|
||||
ntype->uifunc= node_shader_buts_glossy;
|
||||
break;
|
||||
case NODE_DYNAMIC:
|
||||
ntype->uifunc= node_shader_buts_dynamic;
|
||||
break;
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
#include "BKE_material.h"
|
||||
#include "BKE_modifier.h"
|
||||
#include "BKE_paint.h"
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_screen.h"
|
||||
#include "BKE_texture.h"
|
||||
#include "BKE_report.h"
|
||||
@@ -269,13 +270,14 @@ bNode *node_tree_get_editgroup(bNodeTree *nodetree)
|
||||
|
||||
/* assumes nothing being done in ntree yet, sets the default in/out node */
|
||||
/* called from shading buttons or header */
|
||||
void ED_node_shader_default(Scene *UNUSED(scene), ID *id)
|
||||
void ED_node_shader_default(Scene *scene, ID *id)
|
||||
{
|
||||
bNode *in, *out;
|
||||
bNodeSocket *fromsock, *tosock;
|
||||
bNodeSocket *fromsock, *tosock, *sock;
|
||||
bNodeTree *ntree;
|
||||
bNodeTemplate ntemp;
|
||||
int output_type, shader_type;
|
||||
float color[3], strength = 1.0f;
|
||||
|
||||
ntree= ntreeAddTree("Shader Nodetree", NTREE_SHADER, 0);
|
||||
|
||||
@@ -284,24 +286,42 @@ void ED_node_shader_default(Scene *UNUSED(scene), ID *id)
|
||||
Material *ma= (Material*)id;
|
||||
ma->nodetree = ntree;
|
||||
|
||||
output_type = SH_NODE_OUTPUT;
|
||||
shader_type = SH_NODE_MATERIAL;
|
||||
if(scene_use_new_shading_nodes(scene)) {
|
||||
output_type = SH_NODE_OUTPUT_MATERIAL;
|
||||
shader_type = SH_NODE_BSDF_DIFFUSE;
|
||||
}
|
||||
else {
|
||||
output_type = SH_NODE_OUTPUT;
|
||||
shader_type = SH_NODE_MATERIAL;
|
||||
}
|
||||
|
||||
copy_v3_v3(color, &ma->r);
|
||||
strength= 0.0f;
|
||||
break;
|
||||
}
|
||||
case ID_WO: {
|
||||
World *wo= (World*)id;
|
||||
wo->nodetree = ntree;
|
||||
|
||||
output_type = SH_NODE_OUTPUT;
|
||||
shader_type = SH_NODE_MATERIAL;
|
||||
output_type = SH_NODE_OUTPUT_WORLD;
|
||||
shader_type = SH_NODE_BACKGROUND;
|
||||
|
||||
copy_v3_v3(color, &wo->horr);
|
||||
strength= 1.0f;
|
||||
break;
|
||||
}
|
||||
case ID_LA: {
|
||||
Lamp *la= (Lamp*)id;
|
||||
la->nodetree = ntree;
|
||||
|
||||
output_type = SH_NODE_OUTPUT;
|
||||
shader_type = SH_NODE_MATERIAL;
|
||||
output_type = SH_NODE_OUTPUT_LAMP;
|
||||
shader_type = SH_NODE_EMISSION;
|
||||
|
||||
copy_v3_v3(color, &la->r);
|
||||
if(la->type == LA_LOCAL || la->type == LA_SPOT || la->type == LA_AREA)
|
||||
strength= 100.0f;
|
||||
else
|
||||
strength= 1.0f;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -322,6 +342,17 @@ void ED_node_shader_default(Scene *UNUSED(scene), ID *id)
|
||||
fromsock= in->outputs.first;
|
||||
tosock= out->inputs.first;
|
||||
nodeAddLink(ntree, in, fromsock, out, tosock);
|
||||
|
||||
/* default values */
|
||||
if(scene_use_new_shading_nodes(scene)) {
|
||||
sock= in->inputs.first;
|
||||
copy_v3_v3(((bNodeSocketValueRGBA*)sock->default_value)->value, color);
|
||||
|
||||
if(strength != 0.0f) {
|
||||
sock= in->inputs.last;
|
||||
((bNodeSocketValueFloat*)sock->default_value)->value= strength;
|
||||
}
|
||||
}
|
||||
|
||||
ntreeUpdateTree(ntree);
|
||||
}
|
||||
|
||||
@@ -108,6 +108,7 @@ void linearrgb_to_srgb(vec4 col_from, out vec4 col_to)
|
||||
}
|
||||
|
||||
#define M_PI 3.14159265358979323846
|
||||
#define M_1_PI 0.31830988618379069
|
||||
|
||||
/*********** SHADER NODES ***************/
|
||||
|
||||
@@ -1802,3 +1803,319 @@ void shade_alpha_obcolor(vec4 col, vec4 obcol, out vec4 outcol)
|
||||
outcol = vec4(col.rgb, col.a*obcol.a);
|
||||
}
|
||||
|
||||
/*********** NEW SHADER UTILITIES **************/
|
||||
|
||||
float fresnel_dielectric(vec3 Incoming, vec3 Normal, float eta)
|
||||
{
|
||||
/* compute fresnel reflectance without explicitly computing
|
||||
the refracted direction */
|
||||
float c = abs(dot(Incoming, Normal));
|
||||
float g = eta * eta - 1.0 + c * c;
|
||||
float result;
|
||||
|
||||
if(g > 0.0) {
|
||||
g = sqrt(g);
|
||||
float A =(g - c)/(g + c);
|
||||
float B =(c *(g + c)- 1.0)/(c *(g - c)+ 1.0);
|
||||
result = 0.5 * A * A *(1.0 + B * B);
|
||||
}
|
||||
else
|
||||
result = 1.0; /* TIR (no refracted component) */
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
float hypot(float x, float y)
|
||||
{
|
||||
return sqrt(x*x + y*y);
|
||||
}
|
||||
|
||||
/*********** NEW SHADER NODES ***************/
|
||||
|
||||
#define NUM_LIGHTS 3
|
||||
|
||||
/* bsdfs */
|
||||
|
||||
void node_bsdf_diffuse(vec4 color, vec3 N, out vec4 result)
|
||||
{
|
||||
/* ambient light */
|
||||
vec3 L = vec3(0.2);
|
||||
|
||||
/* directional lights */
|
||||
for(int i = 0; i < NUM_LIGHTS; i++) {
|
||||
vec3 light_position = gl_LightSource[i].position.xyz;
|
||||
vec3 light_diffuse = gl_LightSource[i].diffuse.rgb;
|
||||
|
||||
float bsdf = max(dot(N, light_position), 0.0);
|
||||
L += light_diffuse*bsdf;
|
||||
}
|
||||
|
||||
result = vec4(L*color.rgb, 1.0);
|
||||
}
|
||||
|
||||
void node_bsdf_glossy(vec4 color, float roughness, vec3 N, vec3 I, out vec4 result)
|
||||
{
|
||||
vec3 L = vec3(0.0);
|
||||
|
||||
/* directional lights */
|
||||
for(int i = 0; i < NUM_LIGHTS; i++) {
|
||||
vec3 H = gl_LightSource[i].halfVector.xyz;
|
||||
vec3 light_specular = gl_LightSource[i].specular.rgb;
|
||||
|
||||
float bsdf = pow(max(dot(N, H), 0.0), 1.0/roughness);
|
||||
L += light_specular*bsdf;
|
||||
}
|
||||
|
||||
result = vec4(L*color.rgb, 1.0);
|
||||
}
|
||||
|
||||
void node_bsdf_anisotropic(vec4 color, float roughnessU, float roughnessV, vec3 N, vec3 I, out vec4 result)
|
||||
{
|
||||
node_bsdf_diffuse(color, N, result);
|
||||
}
|
||||
|
||||
void node_bsdf_glass(vec4 color, float roughness, float ior, vec3 N, vec3 I, out vec4 result)
|
||||
{
|
||||
node_bsdf_diffuse(color, N, result);
|
||||
}
|
||||
|
||||
void node_bsdf_translucent(vec4 color, vec3 N, out vec4 result)
|
||||
{
|
||||
node_bsdf_diffuse(color, N, result);
|
||||
}
|
||||
|
||||
void node_bsdf_transparent(vec4 color, out vec4 result)
|
||||
{
|
||||
/* this isn't right */
|
||||
result.r = color.r;
|
||||
result.g = color.g;
|
||||
result.b = color.b;
|
||||
result.a = 0.0;
|
||||
}
|
||||
|
||||
void node_bsdf_velvet(vec4 color, float sigma, vec3 N, out vec4 result)
|
||||
{
|
||||
node_bsdf_diffuse(color, N, result);
|
||||
}
|
||||
|
||||
/* emission */
|
||||
|
||||
void node_emission(vec4 color, float strength, vec3 N, out vec4 result)
|
||||
{
|
||||
result = color*strength;
|
||||
}
|
||||
|
||||
/* closures */
|
||||
|
||||
void node_mix_shader(float fac, vec4 shader1, vec4 shader2, out vec4 shader)
|
||||
{
|
||||
shader = mix(shader1, shader2, fac);
|
||||
}
|
||||
|
||||
void node_add_shader(vec4 shader1, vec4 shader2, out vec4 shader)
|
||||
{
|
||||
shader = shader1 + shader2;
|
||||
}
|
||||
|
||||
/* fresnel */
|
||||
|
||||
void node_fresnel(float ior, vec3 N, vec3 I, out float result)
|
||||
{
|
||||
float eta = max(ior, 0.00001);
|
||||
result = fresnel_dielectric(I, N, eta); //backfacing()? 1.0/eta: eta);
|
||||
}
|
||||
|
||||
/* geometry */
|
||||
|
||||
void node_geometry(vec3 I, vec3 N, mat4 toworld,
|
||||
out vec3 position, out vec3 normal, out vec3 tangent,
|
||||
out vec3 true_normal, out vec3 incoming, out vec3 parametric,
|
||||
out float backfacing)
|
||||
{
|
||||
position = (toworld*vec4(I, 1.0)).xyz;
|
||||
normal = N;
|
||||
tangent = vec3(0.0);
|
||||
true_normal = N;
|
||||
incoming = I;
|
||||
parametric = vec3(0.0);
|
||||
backfacing = 0.0;
|
||||
}
|
||||
|
||||
void node_tex_coord(vec3 I, vec3 N, mat4 toworld,
|
||||
vec3 attr_orco, vec3 attr_uv,
|
||||
out vec3 generated, out vec3 uv, out vec3 object,
|
||||
out vec3 camera, out vec3 window, out vec3 reflection)
|
||||
{
|
||||
generated = attr_orco;
|
||||
uv = attr_uv;
|
||||
object = I;
|
||||
camera = I;
|
||||
window = gl_FragCoord.xyz;
|
||||
reflection = reflect(N, I);
|
||||
|
||||
}
|
||||
|
||||
/* textures */
|
||||
|
||||
void node_tex_blend(vec3 co, out float fac)
|
||||
{
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_clouds(vec3 co, float size, out vec4 color, out float fac)
|
||||
{
|
||||
color = vec4(1.0);
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_distnoise(vec3 co, float size, float distortion, out float fac)
|
||||
{
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_environment(vec3 co, sampler2D ima, out vec4 color)
|
||||
{
|
||||
float u = (atan(co.y, co.x) + M_PI)/(2.0*M_PI);
|
||||
float v = atan(co.z, hypot(co.x, co.y))/M_PI + 0.5;
|
||||
|
||||
color = texture2D(ima, vec2(u, v));
|
||||
}
|
||||
|
||||
void node_tex_image(vec3 co, sampler2D ima, out vec4 color)
|
||||
{
|
||||
color = texture2D(ima, co.xy);
|
||||
}
|
||||
|
||||
void node_tex_magic(vec3 p, float turbulence, float n, out vec4 color)
|
||||
{
|
||||
float turb = turbulence/5.0;
|
||||
|
||||
float x = sin((p.x + p.y + p.z)*5.0);
|
||||
float y = cos((-p.x + p.y - p.z)*5.0);
|
||||
float z = -cos((-p.x - p.y + p.z)*5.0);
|
||||
|
||||
if(n > 0.0) {
|
||||
x *= turb;
|
||||
y *= turb;
|
||||
z *= turb;
|
||||
y = -cos(x-y+z);
|
||||
y *= turb;
|
||||
|
||||
if(n > 1.0) {
|
||||
x= cos(x-y-z);
|
||||
x *= turb;
|
||||
|
||||
if(n > 2.0) {
|
||||
z= sin(-x-y-z);
|
||||
z *= turb;
|
||||
|
||||
if(n > 3.0) {
|
||||
x= -cos(-x+y-z);
|
||||
x *= turb;
|
||||
|
||||
if(n > 4.0) {
|
||||
y= -sin(-x+y+z);
|
||||
y *= turb;
|
||||
|
||||
if(n > 5.0) {
|
||||
y= -cos(-x+y+z);
|
||||
y *= turb;
|
||||
|
||||
if(n > 6.0) {
|
||||
x= cos(x+y+z);
|
||||
x *= turb;
|
||||
|
||||
if(n > 7.0) {
|
||||
z= sin(x+y-z);
|
||||
z *= turb;
|
||||
|
||||
if(n > 8.0) {
|
||||
x= -cos(-x-y+z);
|
||||
x *= turb;
|
||||
|
||||
if(n > 9.0) {
|
||||
y= -sin(x-y+z);
|
||||
y *= turb;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(turb != 0.0) {
|
||||
turb *= 2.0;
|
||||
x /= turb;
|
||||
y /= turb;
|
||||
z /= turb;
|
||||
}
|
||||
|
||||
color = vec4(0.5 - x, 0.5 - y, 0.5 - z, 1.0);
|
||||
}
|
||||
|
||||
void node_tex_marble(vec3 co, float size, float turbulence, out float fac)
|
||||
{
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_musgrave(vec3 co, float size, float dimension, float lacunarity, float octaves, float offset, float gain, out float fac)
|
||||
{
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_noise(vec3 co, out vec4 color, out float fac)
|
||||
{
|
||||
color = vec4(1.0);
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_sky(vec3 co, out vec4 color)
|
||||
{
|
||||
color = vec4(1.0);
|
||||
}
|
||||
|
||||
void node_tex_stucci(vec3 co, float size, float turbulence, out float fac)
|
||||
{
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_voronoi(vec3 co, float size, float weight1, float weight2, float weight3, float weight4, float exponent, out vec4 color, out float fac)
|
||||
{
|
||||
color = vec4(1.0);
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
void node_tex_wood(vec3 co, float size, float turbulence, out float fac)
|
||||
{
|
||||
fac = 1.0;
|
||||
}
|
||||
|
||||
/* light path */
|
||||
|
||||
void node_light_path(
|
||||
out float is_camera_ray,
|
||||
out float is_shadow_ray,
|
||||
out float is_diffuse_ray,
|
||||
out float is_glossy_ray,
|
||||
out float is_reflection_ray,
|
||||
out float is_transmission_ray)
|
||||
{
|
||||
is_camera_ray = 1.0;
|
||||
is_shadow_ray = 0.0;
|
||||
is_diffuse_ray = 0.0;
|
||||
is_glossy_ray = 0.0;
|
||||
is_reflection_ray = 0.0;
|
||||
is_transmission_ray = 0.0;
|
||||
}
|
||||
|
||||
/* output */
|
||||
|
||||
void node_output_material(vec4 surface, vec4 volume, float displacement, out vec4 result)
|
||||
{
|
||||
result = surface;
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -35,6 +35,7 @@
|
||||
#include "DNA_ID.h"
|
||||
#include "DNA_vec_types.h"
|
||||
#include "DNA_listBase.h"
|
||||
#include "DNA_texture_types.h"
|
||||
|
||||
struct ID;
|
||||
struct ListBase;
|
||||
@@ -45,6 +46,7 @@ struct bNodeTreeExec;
|
||||
struct AnimData;
|
||||
struct bGPdata;
|
||||
struct uiBlock;
|
||||
struct Image;
|
||||
|
||||
#define NODE_MAXSTR 32
|
||||
|
||||
@@ -191,6 +193,8 @@ typedef struct bNode {
|
||||
#define NODE_BACKGROUND (1<<12)
|
||||
/* automatic flag for nodes included in transforms */
|
||||
#define NODE_TRANSFORM (1<<13)
|
||||
/* node is active texture */
|
||||
#define NODE_ACTIVE_TEXTURE (1<<14)
|
||||
|
||||
/* node->update */
|
||||
/* XXX NODE_UPDATE is a generic update flag. More fine-grained updates
|
||||
@@ -423,6 +427,65 @@ typedef struct NodeColorspill {
|
||||
float uspillr, uspillg, uspillb;
|
||||
}NodeColorspill;
|
||||
|
||||
typedef struct NodeTexBase {
|
||||
TexMapping tex_mapping;
|
||||
ColorMapping color_mapping;
|
||||
} NodeTexBase;
|
||||
|
||||
typedef struct NodeTexSky {
|
||||
NodeTexBase base;
|
||||
float sun_direction[3];
|
||||
float turbidity;
|
||||
} NodeTexSky;
|
||||
|
||||
typedef struct NodeTexImage {
|
||||
NodeTexBase base;
|
||||
int color_space, pad;
|
||||
} NodeTexImage;
|
||||
|
||||
typedef struct NodeTexEnvironment {
|
||||
NodeTexBase base;
|
||||
int color_space, pad;
|
||||
} NodeTexEnvironment;
|
||||
|
||||
typedef struct NodeTexGradient {
|
||||
NodeTexBase base;
|
||||
int gradient_type;
|
||||
int pad;
|
||||
} NodeTexGradient;
|
||||
|
||||
typedef struct NodeTexNoise {
|
||||
NodeTexBase base;
|
||||
} NodeTexNoise;
|
||||
|
||||
typedef struct NodeTexVoronoi {
|
||||
NodeTexBase base;
|
||||
int coloring;
|
||||
int pad;
|
||||
} NodeTexVoronoi;
|
||||
|
||||
typedef struct NodeTexMusgrave {
|
||||
NodeTexBase base;
|
||||
int musgrave_type;
|
||||
int pad;
|
||||
} NodeTexMusgrave;
|
||||
|
||||
typedef struct NodeTexWave {
|
||||
NodeTexBase base;
|
||||
int wave_type;
|
||||
int pad;
|
||||
} NodeTexWave;
|
||||
|
||||
typedef struct NodeTexMagic {
|
||||
NodeTexBase base;
|
||||
int depth;
|
||||
int pad;
|
||||
} NodeTexMagic;
|
||||
|
||||
typedef struct NodeShaderAttribute {
|
||||
char name[64];
|
||||
} NodeShaderAttribute;
|
||||
|
||||
/* TEX_output */
|
||||
typedef struct TexNodeOutput {
|
||||
char name[32];
|
||||
@@ -434,6 +497,65 @@ typedef struct TexNodeOutput {
|
||||
#define CMP_NODE_CHANNEL_MATTE_CS_YUV 3
|
||||
#define CMP_NODE_CHANNEL_MATTE_CS_YCC 4
|
||||
|
||||
/* glossy distributions */
|
||||
#define SHD_GLOSSY_BECKMANN 0
|
||||
#define SHD_GLOSSY_SHARP 1
|
||||
#define SHD_GLOSSY_GGX 2
|
||||
|
||||
/* blend texture */
|
||||
#define SHD_BLEND_LINEAR 0
|
||||
#define SHD_BLEND_QUADRATIC 1
|
||||
#define SHD_BLEND_EASING 2
|
||||
#define SHD_BLEND_DIAGONAL 3
|
||||
#define SHD_BLEND_RADIAL 4
|
||||
#define SHD_BLEND_QUADRATIC_SPHERE 5
|
||||
#define SHD_BLEND_SPHERICAL 6
|
||||
|
||||
/* noise basis for textures */
|
||||
#define SHD_NOISE_PERLIN 0
|
||||
#define SHD_NOISE_VORONOI_F1 1
|
||||
#define SHD_NOISE_VORONOI_F2 2
|
||||
#define SHD_NOISE_VORONOI_F3 3
|
||||
#define SHD_NOISE_VORONOI_F4 4
|
||||
#define SHD_NOISE_VORONOI_F2_F1 5
|
||||
#define SHD_NOISE_VORONOI_CRACKLE 6
|
||||
#define SHD_NOISE_CELL_NOISE 7
|
||||
|
||||
#define SHD_NOISE_SOFT 0
|
||||
#define SHD_NOISE_HARD 1
|
||||
|
||||
/* voronoi texture */
|
||||
#define SHD_VORONOI_DISTANCE_SQUARED 0
|
||||
#define SHD_VORONOI_ACTUAL_DISTANCE 1
|
||||
#define SHD_VORONOI_MANHATTAN 2
|
||||
#define SHD_VORONOI_CHEBYCHEV 3
|
||||
#define SHD_VORONOI_MINKOVSKY_H 4
|
||||
#define SHD_VORONOI_MINKOVSKY_4 5
|
||||
#define SHD_VORONOI_MINKOVSKY 6
|
||||
|
||||
#define SHD_VORONOI_INTENSITY 0
|
||||
#define SHD_VORONOI_CELLS 1
|
||||
|
||||
/* musgrave texture */
|
||||
#define SHD_MUSGRAVE_MULTIFRACTAL 0
|
||||
#define SHD_MUSGRAVE_FBM 1
|
||||
#define SHD_MUSGRAVE_HYBRID_MULTIFRACTAL 2
|
||||
#define SHD_MUSGRAVE_RIDGED_MULTIFRACTAL 3
|
||||
#define SHD_MUSGRAVE_HETERO_TERRAIN 4
|
||||
|
||||
/* wave texture */
|
||||
#define SHD_WAVE_BANDS 0
|
||||
#define SHD_WAVE_RINGS 1
|
||||
|
||||
#define SHD_WAVE_SINE 0
|
||||
#define SHD_WAVE_SAW 1
|
||||
#define SHD_WAVE_TRI 2
|
||||
|
||||
/* image/environment texture */
|
||||
#define SHD_COLORSPACE_LINEAR 0
|
||||
#define SHD_COLORSPACE_SRGB 1
|
||||
|
||||
/* blur node */
|
||||
#define CMP_NODE_BLUR_ASPECT_NONE 0
|
||||
#define CMP_NODE_BLUR_ASPECT_Y 1
|
||||
#define CMP_NODE_BLUR_ASPECT_X 2
|
||||
|
||||
@@ -108,6 +108,27 @@ EnumPropertyItem node_filter_items[] = {
|
||||
{6, "SHADOW", 0, "Shadow", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
EnumPropertyItem prop_noise_basis_items[] = {
|
||||
{SHD_NOISE_PERLIN, "PERLIN", 0, "Perlin", ""},
|
||||
{SHD_NOISE_VORONOI_F1, "VORONOI_F1", 0, "Voronoi F1", ""},
|
||||
{SHD_NOISE_VORONOI_F2, "VORONOI_F2", 0, "Voronoi F2", ""},
|
||||
{SHD_NOISE_VORONOI_F3, "VORONOI_F3", 0, "Voronoi F3", ""},
|
||||
{SHD_NOISE_VORONOI_F4, "VORONOI_F4", 0, "Voronoi F4", ""},
|
||||
{SHD_NOISE_VORONOI_F2_F1, "VORONOI_F2_F1", 0, "Voronoi F2-F1", ""},
|
||||
{SHD_NOISE_VORONOI_CRACKLE, "VORONOI_CRACKLE", 0, "Voronoi Crackle", ""},
|
||||
{SHD_NOISE_CELL_NOISE, "CELL_NOISE", 0, "Cell Noise", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
EnumPropertyItem prop_noise_type_items[] = {
|
||||
{SHD_NOISE_SOFT, "SOFT", 0, "Soft", ""},
|
||||
{SHD_NOISE_HARD, "HARD", 0, "Hard", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
EnumPropertyItem prop_wave_items[] = {
|
||||
{SHD_WAVE_SINE, "SINE", 0, "Sine", "Uses a sine wave to produce bands"},
|
||||
{SHD_WAVE_SAW, "SAW", 0, "Saw", "Uses a saw wave to produce bands"},
|
||||
{SHD_WAVE_TRI, "TRI", 0, "Tri", "Uses a triangle wave to produce bands"},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
/* Add any new socket value subtype here.
|
||||
* When adding a new subtype here, make sure you also add it
|
||||
@@ -762,6 +783,12 @@ static EnumPropertyItem node_ycc_items[] = {
|
||||
{ 2, "JFIF", 0, "Jpeg", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
static EnumPropertyItem node_glossy_items[] = {
|
||||
{SHD_GLOSSY_SHARP, "SHARP", 0, "Sharp", ""},
|
||||
{SHD_GLOSSY_BECKMANN, "BECKMANN", 0, "Beckmann", ""},
|
||||
{SHD_GLOSSY_GGX, "GGX", 0, "GGX", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
#define MaxNodes 50000
|
||||
|
||||
enum
|
||||
@@ -1093,6 +1120,212 @@ static void def_sh_geometry(StructRNA *srna)
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_attribute(StructRNA *srna)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeShaderAttribute", "storage");
|
||||
|
||||
prop = RNA_def_property(srna, "attribute_name", PROP_STRING, PROP_NONE);
|
||||
RNA_def_property_string_sdna(prop, NULL, "name");
|
||||
RNA_def_property_ui_text(prop, "Attribute Name", "");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex(StructRNA *srna)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
prop= RNA_def_property(srna, "texture_mapping", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "base.tex_mapping");
|
||||
RNA_def_property_flag(prop, PROP_NEVER_NULL);
|
||||
RNA_def_property_ui_text(prop, "Texture Mapping", "Texture coordinate mapping settings");
|
||||
|
||||
prop= RNA_def_property(srna, "color_mapping", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "base.color_mapping");
|
||||
RNA_def_property_flag(prop, PROP_NEVER_NULL);
|
||||
RNA_def_property_ui_text(prop, "Color Mapping", "Color mapping settings");
|
||||
}
|
||||
|
||||
static void def_sh_tex_sky(StructRNA *srna)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexSky", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop = RNA_def_property(srna, "sun_direction", PROP_FLOAT, PROP_DIRECTION);
|
||||
RNA_def_property_ui_text(prop, "Sun Direction", "Direction from where the sun is shining");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
|
||||
prop = RNA_def_property(srna, "turbidity", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_ui_text(prop, "Turbidity", "");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_environment(StructRNA *srna)
|
||||
{
|
||||
static const EnumPropertyItem prop_color_space_items[]= {
|
||||
{SHD_COLORSPACE_SRGB, "SRGB", 0, "sRGB", "Image is in sRGB color space"},
|
||||
{SHD_COLORSPACE_LINEAR, "LINEAR", 0, "Linear", "Image is in scene linear color space"},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "id");
|
||||
RNA_def_property_struct_type(prop, "Image");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Image", "");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexImage", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "color_space", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, prop_color_space_items);
|
||||
RNA_def_property_ui_text(prop, "Color Space", "Image file color space");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_image(StructRNA *srna)
|
||||
{
|
||||
static const EnumPropertyItem prop_color_space_items[]= {
|
||||
{SHD_COLORSPACE_LINEAR, "LINEAR", 0, "Linear", "Image is in scene linear color space"},
|
||||
{SHD_COLORSPACE_SRGB, "SRGB", 0, "sRGB", "Image is in sRGB color space"},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "id");
|
||||
RNA_def_property_struct_type(prop, "Image");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Image", "");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexImage", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "color_space", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, prop_color_space_items);
|
||||
RNA_def_property_ui_text(prop, "Color Space", "Image file color space");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_gradient(StructRNA *srna)
|
||||
{
|
||||
static EnumPropertyItem prop_gradient_type[] = {
|
||||
{SHD_BLEND_LINEAR, "LINEAR", 0, "Linear", "Creates a linear progression"},
|
||||
{SHD_BLEND_QUADRATIC, "QUADRATIC", 0, "Quadratic", "Creates a quadratic progression"},
|
||||
{SHD_BLEND_EASING, "EASING", 0, "Easing", "Creates a progression easing from one step to the next"},
|
||||
{SHD_BLEND_DIAGONAL, "DIAGONAL", 0, "Diagonal", "Creates a diagonal progression"},
|
||||
{SHD_BLEND_SPHERICAL, "SPHERICAL", 0, "Spherical", "Creates a spherical progression"},
|
||||
{SHD_BLEND_QUADRATIC_SPHERE, "QUADRATIC_SPHERE", 0, "Quadratic sphere", "Creates a quadratic progression in the shape of a sphere"},
|
||||
{SHD_BLEND_RADIAL, "RADIAL", 0, "Radial", "Creates a radial progression"},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexGradient", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "gradient_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_items(prop, prop_gradient_type);
|
||||
RNA_def_property_ui_text(prop, "Gradient Type", "Sets the style of the color blending");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_noise(StructRNA *srna)
|
||||
{
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexNoise", "storage");
|
||||
def_sh_tex(srna);
|
||||
}
|
||||
|
||||
static void def_sh_tex_magic(StructRNA *srna)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexMagic", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "turbulence_depth", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "depth");
|
||||
RNA_def_property_range(prop, 0, 10);
|
||||
RNA_def_property_ui_text(prop, "Depth", "Level of detail in the added turbulent noise");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_musgrave(StructRNA *srna)
|
||||
{
|
||||
static EnumPropertyItem prop_musgrave_type[] = {
|
||||
{SHD_MUSGRAVE_MULTIFRACTAL, "MULTIFRACTAL", 0, "Multifractal", ""},
|
||||
{SHD_MUSGRAVE_RIDGED_MULTIFRACTAL, "RIDGED_MULTIFRACTAL", 0, "Ridged Multifractal", ""},
|
||||
{SHD_MUSGRAVE_HYBRID_MULTIFRACTAL, "HYBRID_MULTIFRACTAL", 0, "Hybrid Multifractal", ""},
|
||||
{SHD_MUSGRAVE_FBM, "FBM", 0, "fBM", ""},
|
||||
{SHD_MUSGRAVE_HETERO_TERRAIN, "HETERO_TERRAIN", 0, "Hetero Terrain", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexMusgrave", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "musgrave_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "musgrave_type");
|
||||
RNA_def_property_enum_items(prop, prop_musgrave_type);
|
||||
RNA_def_property_ui_text(prop, "Type", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_voronoi(StructRNA *srna)
|
||||
{
|
||||
static EnumPropertyItem prop_coloring_items[] = {
|
||||
{SHD_VORONOI_INTENSITY, "INTENSITY", 0, "Intensity", "Only calculate intensity"},
|
||||
{SHD_VORONOI_CELLS, "CELLS", 0, "Cells", "Color cells by position"},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexVoronoi", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "coloring", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "coloring");
|
||||
RNA_def_property_enum_items(prop, prop_coloring_items);
|
||||
RNA_def_property_ui_text(prop, "Coloring", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_sh_tex_wave(StructRNA *srna)
|
||||
{
|
||||
static EnumPropertyItem prop_wave_type_items[] = {
|
||||
{SHD_WAVE_BANDS, "BANDS", 0, "Bands", "Uses standard wave texture in bands"},
|
||||
{SHD_WAVE_RINGS, "RINGS", 0, "Rings", "Uses wave texture in rings"},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
PropertyRNA *prop;
|
||||
|
||||
RNA_def_struct_sdna_from(srna, "NodeTexWave", "storage");
|
||||
def_sh_tex(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "wave_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "wave_type");
|
||||
RNA_def_property_enum_items(prop, prop_wave_type_items);
|
||||
RNA_def_property_ui_text(prop, "Wave Type", "");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void def_glossy(StructRNA *srna)
|
||||
{
|
||||
PropertyRNA *prop;
|
||||
|
||||
prop = RNA_def_property(srna, "distribution", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "custom1");
|
||||
RNA_def_property_enum_items(prop, node_glossy_items);
|
||||
RNA_def_property_ui_text(prop, "Distribution", "");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
|
||||
}
|
||||
|
||||
/* -- Compositor Nodes ------------------------------------------------------ */
|
||||
|
||||
@@ -2707,6 +2940,16 @@ static void rna_def_node_socket(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Name", "Socket name");
|
||||
RNA_def_struct_name_property(srna, prop);
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_NodeGroupSocket_update");
|
||||
|
||||
prop = RNA_def_property(srna, "group_socket", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "groupsock");
|
||||
RNA_def_property_struct_type(prop, "NodeSocket");
|
||||
RNA_def_property_ui_text(prop, "Group Socket", "For group nodes, the group input or output socket this corresponds to");
|
||||
|
||||
prop = RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SOCK_COLLAPSED);
|
||||
RNA_def_property_ui_text(prop, "Expanded", "Socket links are expanded in the user interface");
|
||||
RNA_def_property_update(prop, NC_NODE|NA_EDITED, NULL);
|
||||
}
|
||||
|
||||
static void rna_def_node_socket_subtype(BlenderRNA *brna, int type, int subtype, const char *name, const char *ui_name)
|
||||
@@ -2842,6 +3085,11 @@ static void rna_def_node(BlenderRNA *brna)
|
||||
RNA_def_property_struct_type(prop, "Node");
|
||||
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop, "Parent", "Parent this node is attached to");
|
||||
|
||||
prop = RNA_def_property(srna, "show_texture", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", NODE_ACTIVE_TEXTURE);
|
||||
RNA_def_property_ui_text(prop, "Show Texture", "Draw node in viewport textured draw mode");
|
||||
RNA_def_property_update(prop, 0, "rna_Node_update");
|
||||
}
|
||||
|
||||
static void rna_def_node_link(BlenderRNA *brna)
|
||||
|
||||
@@ -53,7 +53,39 @@ DefNode( ShaderNode, SH_NODE_INVERT, 0, "INVER
|
||||
DefNode( ShaderNode, SH_NODE_SEPRGB, 0, "SEPRGB", SeparateRGB, "Separate RGB", "" )
|
||||
DefNode( ShaderNode, SH_NODE_COMBRGB, 0, "COMBRGB", CombineRGB, "Combine RGB", "" )
|
||||
DefNode( ShaderNode, SH_NODE_HUE_SAT, 0, "HUE_SAT", HueSaturation, "Hue/Saturation", "" )
|
||||
|
||||
|
||||
DefNode( ShaderNode, SH_NODE_OUTPUT_MATERIAL, 0, "OUTPUT_MATERIAL", OutputMaterial, "Material Output", "" )
|
||||
DefNode( ShaderNode, SH_NODE_OUTPUT_LAMP, 0, "OUTPUT_LAMP", OutputLamp, "Lamp Output", "" )
|
||||
DefNode( ShaderNode, SH_NODE_OUTPUT_WORLD, 0, "OUTPUT_WORLD", OutputWorld, "World Output", "" )
|
||||
DefNode( ShaderNode, SH_NODE_FRESNEL, 0, "FRESNEL", Fresnel, "Fresnel", "" )
|
||||
DefNode( ShaderNode, SH_NODE_LAYER_WEIGHT, 0, "LAYER_WEIGHT", LayerWeight, "LayerWeight", "" )
|
||||
DefNode( ShaderNode, SH_NODE_MIX_SHADER, 0, "MIX_SHADER", MixShader, "Mix Shader", "" )
|
||||
DefNode( ShaderNode, SH_NODE_ADD_SHADER, 0, "ADD_SHADER", AddShader, "Add Shader", "" )
|
||||
DefNode( ShaderNode, SH_NODE_ATTRIBUTE, def_sh_attribute, "ATTRIBUTE", Attribute, "Attribute", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BACKGROUND, 0, "BACKGROUND", Background, "Background", "" )
|
||||
DefNode( ShaderNode, SH_NODE_HOLDOUT, 0, "HOLDOUT", Holdout, "Holdout", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BSDF_DIFFUSE, 0, "BSDF_DIFFUSE", BsdfDiffuse, "Diffuse Bsdf", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BSDF_GLOSSY, def_glossy, "BSDF_GLOSSY", BsdfGlossy, "Glossy Bsdf", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BSDF_GLASS, def_glossy, "BSDF_GLASS", BsdfGlass, "Glass Bsdf", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BSDF_TRANSLUCENT, 0, "BSDF_TRANSLUCENT", BsdfTranslucent, "Translucent Bsdf", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BSDF_TRANSPARENT, 0, "BSDF_TRANSPARENT", BsdfTransparent, "Transparent Bsdf", "" )
|
||||
DefNode( ShaderNode, SH_NODE_BSDF_VELVET, 0, "BSDF_VELVET", BsdfVelvet, "Velvet Bsdf", "" )
|
||||
DefNode( ShaderNode, SH_NODE_VOLUME_TRANSPARENT, 0, "VOLUME_TRANSPARENT", VolumeTransparent,"Transparent Volume","" )
|
||||
DefNode( ShaderNode, SH_NODE_VOLUME_ISOTROPIC, 0, "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "" )
|
||||
DefNode( ShaderNode, SH_NODE_EMISSION, 0, "EMISSION", Emission, "Emission", "" )
|
||||
DefNode( ShaderNode, SH_NODE_NEW_GEOMETRY, 0, "NEW_GEOMETRY", NewGeometry, "Geometry", "" )
|
||||
DefNode( ShaderNode, SH_NODE_LIGHT_PATH, 0, "LIGHT_PATH", Light_path, "Light_path", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_IMAGE, def_sh_tex_image, "TEX_IMAGE", TexImage, "Image Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_ENVIRONMENT, def_sh_tex_environment, "TEX_ENVIRONMENT", TexEnvironment, "Environment Texture","" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_SKY, def_sh_tex_sky, "TEX_SKY", TexSky, "Sky Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_GRADIENT, def_sh_tex_gradient, "TEX_GRADIENT", TexGradient, "Gradient Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_NOISE, def_sh_tex_noise, "TEX_NOISE", TexNoise, "Noise Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_MAGIC, def_sh_tex_magic, "TEX_MAGIC", TexMagic, "Magic Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_WAVE, def_sh_tex_wave, "TEX_WAVE", TexWave, "Wave Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_MUSGRAVE, def_sh_tex_musgrave, "TEX_MUSGRAVE", TexMusgrave, "Musgrave Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_VORONOI, def_sh_tex_voronoi, "TEX_VORONOI", TexVoronoi, "Voronoi Texture", "" )
|
||||
DefNode( ShaderNode, SH_NODE_TEX_COORD, 0, "TEX_COORD", TexCoord, "Texture Coordinate","")
|
||||
|
||||
DefNode( CompositorNode, CMP_NODE_VIEWER, 0, "VIEWER", Viewer, "Viewer", "" )
|
||||
DefNode( CompositorNode, CMP_NODE_RGB, 0, "RGB", RGB, "RGB", "" )
|
||||
DefNode( CompositorNode, CMP_NODE_VALUE, 0, "VALUE", Value, "Value", "" )
|
||||
|
||||
@@ -128,6 +128,37 @@ set(SRC
|
||||
shader/nodes/node_shader_valToRgb.c
|
||||
shader/nodes/node_shader_value.c
|
||||
shader/nodes/node_shader_vectMath.c
|
||||
shader/nodes/node_shader_attribute.c
|
||||
shader/nodes/node_shader_background.c
|
||||
shader/nodes/node_shader_bsdf_diffuse.c
|
||||
shader/nodes/node_shader_bsdf_glossy.c
|
||||
shader/nodes/node_shader_bsdf_glass.c
|
||||
shader/nodes/node_shader_bsdf_translucent.c
|
||||
shader/nodes/node_shader_bsdf_transparent.c
|
||||
shader/nodes/node_shader_bsdf_velvet.c
|
||||
shader/nodes/node_shader_emission.c
|
||||
shader/nodes/node_shader_fresnel.c
|
||||
shader/nodes/node_shader_layer_weight.c
|
||||
shader/nodes/node_shader_geometry.c
|
||||
shader/nodes/node_shader_holdout.c
|
||||
shader/nodes/node_shader_volume_transparent.c
|
||||
shader/nodes/node_shader_volume_isotropic.c
|
||||
shader/nodes/node_shader_light_path.c
|
||||
shader/nodes/node_shader_mix_shader.c
|
||||
shader/nodes/node_shader_add_shader.c
|
||||
shader/nodes/node_shader_output_lamp.c
|
||||
shader/nodes/node_shader_output_material.c
|
||||
shader/nodes/node_shader_output_world.c
|
||||
shader/nodes/node_shader_tex_gradient.c
|
||||
shader/nodes/node_shader_tex_coord.c
|
||||
shader/nodes/node_shader_tex_environment.c
|
||||
shader/nodes/node_shader_tex_image.c
|
||||
shader/nodes/node_shader_tex_magic.c
|
||||
shader/nodes/node_shader_tex_musgrave.c
|
||||
shader/nodes/node_shader_tex_noise.c
|
||||
shader/nodes/node_shader_tex_sky.c
|
||||
shader/nodes/node_shader_tex_voronoi.c
|
||||
shader/nodes/node_shader_tex_wave.c
|
||||
shader/node_shader_tree.c
|
||||
shader/node_shader_util.c
|
||||
|
||||
|
||||
@@ -71,6 +71,41 @@ void register_node_type_sh_seprgb(ListBase *lb);
|
||||
void register_node_type_sh_combrgb(ListBase *lb);
|
||||
void register_node_type_sh_hue_sat(ListBase *lb);
|
||||
|
||||
void register_node_type_sh_attribute(ListBase *lb);
|
||||
void register_node_type_sh_geometry(ListBase *lb);
|
||||
void register_node_type_sh_light_path(ListBase *lb);
|
||||
void register_node_type_sh_fresnel(ListBase *lb);
|
||||
void register_node_type_sh_layer_weight(ListBase *lb);
|
||||
void register_node_type_sh_tex_coord(ListBase *lb);
|
||||
|
||||
void register_node_type_sh_background(ListBase *lb);
|
||||
void register_node_type_sh_bsdf_diffuse(ListBase *lb);
|
||||
void register_node_type_sh_bsdf_glossy(ListBase *lb);
|
||||
void register_node_type_sh_bsdf_glass(ListBase *lb);
|
||||
void register_node_type_sh_bsdf_translucent(ListBase *lb);
|
||||
void register_node_type_sh_bsdf_transparent(ListBase *lb);
|
||||
void register_node_type_sh_bsdf_velvet(ListBase *lb);
|
||||
void register_node_type_sh_emission(ListBase *lb);
|
||||
void register_node_type_sh_holdout(ListBase *lb);
|
||||
void register_node_type_sh_volume_transparent(ListBase *lb);
|
||||
void register_node_type_sh_volume_isotropic(ListBase *lb);
|
||||
void register_node_type_sh_mix_shader(ListBase *lb);
|
||||
void register_node_type_sh_add_shader(ListBase *lb);
|
||||
|
||||
void register_node_type_sh_output_lamp(ListBase *lb);
|
||||
void register_node_type_sh_output_material(ListBase *lb);
|
||||
void register_node_type_sh_output_world(ListBase *lb);
|
||||
|
||||
void register_node_type_sh_tex_image(ListBase *lb);
|
||||
void register_node_type_sh_tex_environment(ListBase *lb);
|
||||
void register_node_type_sh_tex_sky(ListBase *lb);
|
||||
void register_node_type_sh_tex_voronoi(ListBase *lb);
|
||||
void register_node_type_sh_tex_gradient(ListBase *lb);
|
||||
void register_node_type_sh_tex_magic(ListBase *lb);
|
||||
void register_node_type_sh_tex_wave(ListBase *lb);
|
||||
void register_node_type_sh_tex_musgrave(ListBase *lb);
|
||||
void register_node_type_sh_tex_noise(ListBase *lb);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -233,7 +233,8 @@ void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
|
||||
@note: preserve material from ShadeInput for material id, nodetree execs change it
|
||||
fix for bug "[#28012] Mat ID messy with shader nodes"
|
||||
*/
|
||||
Material *mat = shi->mat; bNodeThreadStack *nts = NULL;
|
||||
Material *mat = shi->mat;
|
||||
bNodeThreadStack *nts = NULL;
|
||||
bNodeTreeExec *exec = ntree->execdata;
|
||||
|
||||
/* convert caller data to struct */
|
||||
|
||||
@@ -285,3 +285,22 @@ void ntreeExecGPUNodes(bNodeTreeExec *exec, GPUMaterial *mat, int do_outputs)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void node_shader_gpu_tex_mapping(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *UNUSED(out))
|
||||
{
|
||||
NodeTexBase *base= node->storage;
|
||||
TexMapping *texmap= &base->tex_mapping;
|
||||
float domin= (texmap->flag & TEXMAP_CLIP_MIN) != 0;
|
||||
float domax= (texmap->flag & TEXMAP_CLIP_MAX) != 0;
|
||||
|
||||
if(domin || domax || !(texmap->flag & TEXMAP_UNIT_MATRIX)) {
|
||||
GPUNodeLink *tmat = GPU_uniform((float*)texmap->mat);
|
||||
GPUNodeLink *tmin = GPU_uniform(texmap->min);
|
||||
GPUNodeLink *tmax = GPU_uniform(texmap->max);
|
||||
GPUNodeLink *tdomin = GPU_uniform(&domin);
|
||||
GPUNodeLink *tdomax = GPU_uniform(&domax);
|
||||
|
||||
GPU_link(mat, "mapping", in[0].link, tmat, tmin, tmax, tdomin, tdomax, &in[0].link);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_color_types.h"
|
||||
#include "DNA_customdata_types.h"
|
||||
#include "DNA_ID.h"
|
||||
#include "DNA_image_types.h"
|
||||
#include "DNA_material_types.h"
|
||||
@@ -122,6 +123,7 @@ void nodestack_get_vec(float *in, short type_in, bNodeStack *ns);
|
||||
|
||||
void node_gpu_stack_from_data(struct GPUNodeStack *gs, int type, struct bNodeStack *ns);
|
||||
void node_data_from_gpu_stack(struct bNodeStack *ns, struct GPUNodeStack *gs);
|
||||
void node_shader_gpu_tex_mapping(struct GPUMaterial *mat, struct bNode *node, struct GPUNodeStack *in, struct GPUNodeStack *out);
|
||||
|
||||
void ntreeExecGPUNodes(struct bNodeTreeExec *exec, struct GPUMaterial *mat, int do_outputs);
|
||||
|
||||
|
||||
66
source/blender/nodes/shader/nodes/node_shader_add_shader.c
Normal file
66
source/blender/nodes/shader/nodes/node_shader_add_shader.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_add_shader_in[]= {
|
||||
{ SOCK_SHADER, 1, "Shader"},
|
||||
{ SOCK_SHADER, 1, "Shader"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_add_shader_out[]= {
|
||||
{ SOCK_SHADER, 0, "Shader"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_add_shader(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_add_shader", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_add_shader(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_ADD_SHADER, "Add Shader", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_add_shader_in, sh_node_add_shader_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_add_shader);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
63
source/blender/nodes/shader/nodes/node_shader_attribute.c
Normal file
63
source/blender/nodes/shader/nodes/node_shader_attribute.c
Normal file
@@ -0,0 +1,63 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_attribute_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color"},
|
||||
{ SOCK_VECTOR, 0, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, -FLT_MAX, FLT_MAX},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_attribute(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeShaderAttribute *attr = MEM_callocN(sizeof(NodeShaderAttribute), "NodeShaderAttribute");
|
||||
node->storage = attr;
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_attribute(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_ATTRIBUTE, "Attribute", NODE_CLASS_INPUT, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_attribute_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_attribute);
|
||||
node_type_storage(&ntype, "NodeShaderAttribute", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, NULL);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
}
|
||||
|
||||
61
source/blender/nodes/shader/nodes/node_shader_background.c
Normal file
61
source/blender/nodes/shader/nodes/node_shader_background.c
Normal file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_background_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Strength", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_background_out[]= {
|
||||
{ SOCK_SHADER, 0, "Background"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_background(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BACKGROUND, "Background", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_background_in, sh_node_background_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, NULL);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_anisotropic_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Roughness U", 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Roughness V", 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_anisotropic_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_anisotropic(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_bsdf_anisotropic", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_anisotropic(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_ANISOTROPIC, "Glossy Anisotropic BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_anisotropic_in, sh_node_bsdf_anisotropic_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_anisotropic);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
65
source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c
Normal file
65
source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_diffuse_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_diffuse_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_diffuse(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_bsdf_diffuse", in, out, GPU_builtin(GPU_VIEW_NORMAL));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_diffuse(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_DIFFUSE, "Diffuse BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_diffuse_in, sh_node_bsdf_diffuse_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_diffuse);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
67
source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c
Normal file
67
source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_glass_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Roughness", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "IOR", 1.45f, 0.0f, 0.0f, 0.0f, 1.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_glass_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_glass(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_bsdf_glass", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_glass(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_GLASS, "Glass BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_glass_in, sh_node_bsdf_glass_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_glass);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
67
source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c
Normal file
67
source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_glossy_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Roughness", 0.2f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_glossy_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_glossy(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
/* todo: is incoming vector normalized? */
|
||||
return GPU_stack_link(mat, "node_bsdf_glossy", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_glossy(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_GLOSSY, "Glossy BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_glossy_in, sh_node_bsdf_glossy_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_glossy);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_translucent_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_translucent_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_translucent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_bsdf_translucent", in, out, GPU_builtin(GPU_VIEW_NORMAL));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_translucent(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_TRANSLUCENT, "Translucent BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_translucent_in, sh_node_bsdf_translucent_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_translucent);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_transparent_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_transparent_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_transparent(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_bsdf_transparent", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_transparent(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_TRANSPARENT, "Transparent BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_transparent_in, sh_node_bsdf_transparent_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_transparent);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
66
source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c
Normal file
66
source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_velvet_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Sigma", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_bsdf_velvet_out[]= {
|
||||
{ SOCK_SHADER, 0, "BSDF"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_bsdf_velvet(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_bsdf_velvet", in, out, GPU_builtin(GPU_VIEW_NORMAL));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_bsdf_velvet(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_BSDF_VELVET, "Velvet BSDF", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_bsdf_velvet_in, sh_node_bsdf_velvet_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_bsdf_velvet);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
66
source/blender/nodes/shader/nodes/node_shader_emission.c
Normal file
66
source/blender/nodes/shader/nodes/node_shader_emission.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_emission_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Strength", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_emission_out[]= {
|
||||
{ SOCK_SHADER, 0, "Emission"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_emission(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_emission", in, out, GPU_builtin(GPU_VIEW_NORMAL));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_emission(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_EMISSION, "Emission", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_emission_in, sh_node_emission_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_emission);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
65
source/blender/nodes/shader/nodes/node_shader_fresnel.c
Normal file
65
source/blender/nodes/shader/nodes/node_shader_fresnel.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* $Id: node_shader_fresnel.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** Fresnel ******************** */
|
||||
static bNodeSocketTemplate sh_node_fresnel_in[]= {
|
||||
{ SOCK_FLOAT, 1, "IOR", 1.45f, 0.0f, 0.0f, 0.0f, 1.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_fresnel_out[]= {
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_fresnel(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
/* todo: is incoming vector normalized? */
|
||||
return GPU_stack_link(mat, "node_fresnel", in, out, GPU_builtin(GPU_VIEW_NORMAL), GPU_builtin(GPU_VIEW_POSITION));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_fresnel(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_FRESNEL, "Fresnel", NODE_CLASS_INPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_fresnel_in, sh_node_fresnel_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_fresnel);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -140,6 +140,7 @@ void register_node_type_sh_geom(ListBase *lb)
|
||||
|
||||
node_type_base(&ntype, SH_NODE_GEOMETRY, "Geometry", NODE_CLASS_INPUT, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_geom_out);
|
||||
node_type_size(&ntype, 120, 80, 160);
|
||||
node_type_init(&ntype, node_shader_init_geometry);
|
||||
|
||||
68
source/blender/nodes/shader/nodes/node_shader_geometry.c
Normal file
68
source/blender/nodes/shader/nodes/node_shader_geometry.c
Normal file
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_geometry_out[]= {
|
||||
{ SOCK_VECTOR, 0, "Position", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Normal", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Tangent", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "True Normal", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Incoming", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Parametric", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Backfacing", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_geometry(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_geometry", in, out,
|
||||
GPU_builtin(GPU_VIEW_POSITION), GPU_builtin(GPU_VIEW_NORMAL),
|
||||
GPU_builtin(GPU_INVERSE_VIEW_MATRIX));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_geometry(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_NEW_GEOMETRY, "Geometry", NODE_CLASS_INPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_geometry_out);
|
||||
node_type_size(&ntype, 120, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_geometry);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
60
source/blender/nodes/shader/nodes/node_shader_holdout.c
Normal file
60
source/blender/nodes/shader/nodes/node_shader_holdout.c
Normal file
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_holdout_in[]= {
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_holdout_out[]= {
|
||||
{ SOCK_SHADER, 0, "Holdout"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_holdout(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_HOLDOUT, "Holdout", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_holdout_in, sh_node_holdout_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, NULL);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
66
source/blender/nodes/shader/nodes/node_shader_layer_weight.c
Normal file
66
source/blender/nodes/shader/nodes/node_shader_layer_weight.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_layer_weight.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** Layer Weight ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_layer_weight_in[]= {
|
||||
{ SOCK_FLOAT, 1, "Blend", 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_layer_weight_out[]= {
|
||||
{ SOCK_FLOAT, 0, "Fresnel", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Facing", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_layer_weight(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_layer_weight(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_LAYER_WEIGHT, "Layer Weight", NODE_CLASS_INPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_layer_weight_in, sh_node_layer_weight_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_layer_weight);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
66
source/blender/nodes/shader/nodes/node_shader_light_path.c
Normal file
66
source/blender/nodes/shader/nodes/node_shader_light_path.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_light_path_out[]= {
|
||||
{ SOCK_FLOAT, 0, "Is Camera Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Is Shadow Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Is Diffuse Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Is Glossy Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Is Singular Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Is Reflection Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Is Transmission Ray", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_light_path(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_light_path", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_light_path(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_LIGHT_PATH, "Light Path", NODE_CLASS_INPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_light_path_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_light_path);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -91,7 +91,7 @@ void register_node_type_sh_mapping(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_MAPPING, "Mapping", NODE_CLASS_OP_VECTOR, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_mapping_in, sh_node_mapping_out);
|
||||
node_type_size(&ntype, 240, 160, 320);
|
||||
node_type_init(&ntype, node_shader_init_mapping);
|
||||
|
||||
@@ -241,7 +241,7 @@ void register_node_type_sh_math(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_MATH, "Math", NODE_CLASS_CONVERTOR, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_math_in, sh_node_math_out);
|
||||
node_type_size(&ntype, 120, 110, 160);
|
||||
node_type_label(&ntype, node_math_label);
|
||||
|
||||
@@ -78,7 +78,7 @@ void register_node_type_sh_mix_rgb(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_MIX_RGB, "Mix", NODE_CLASS_OP_COLOR, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_mix_rgb_in, sh_node_mix_rgb_out);
|
||||
node_type_size(&ntype, 100, 60, 150);
|
||||
node_type_label(&ntype, node_blend_label);
|
||||
|
||||
67
source/blender/nodes/shader/nodes/node_shader_mix_shader.c
Normal file
67
source/blender/nodes/shader/nodes/node_shader_mix_shader.c
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_mix_shader_in[]= {
|
||||
{ SOCK_FLOAT, 1, "Fac", 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_SHADER, 1, "Shader"},
|
||||
{ SOCK_SHADER, 1, "Shader"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_mix_shader_out[]= {
|
||||
{ SOCK_SHADER, 0, "Shader"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_mix_shader(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
return GPU_stack_link(mat, "node_mix_shader", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_mix_shader(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_MIX_SHADER, "Mix Shader", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_mix_shader_in, sh_node_mix_shader_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_mix_shader);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
55
source/blender/nodes/shader/nodes/node_shader_output_lamp.c
Normal file
55
source/blender/nodes/shader/nodes/node_shader_output_lamp.c
Normal file
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_output_lamp_in[]= {
|
||||
{ SOCK_SHADER, 1, "Surface", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_output_lamp(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_OUTPUT_LAMP, "Lamp Output", NODE_CLASS_OUTPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_output_lamp_in, NULL);
|
||||
node_type_size(&ntype, 120, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, NULL);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_output_material_in[]= {
|
||||
{ SOCK_SHADER, 1, "Surface"},
|
||||
{ SOCK_SHADER, 1, "Volume"},
|
||||
{ SOCK_FLOAT, 1, "Displacement", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_output_material(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
GPUNodeLink *outlink;
|
||||
|
||||
GPU_stack_link(mat, "node_output_material", in, out, &outlink);
|
||||
GPU_material_output_link(mat, outlink);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_output_material(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_OUTPUT_MATERIAL, "Material Output", NODE_CLASS_OUTPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_output_material_in, NULL);
|
||||
node_type_size(&ntype, 120, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_output_material);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
56
source/blender/nodes/shader/nodes/node_shader_output_world.c
Normal file
56
source/blender/nodes/shader/nodes/node_shader_output_world.c
Normal file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_output_world_in[]= {
|
||||
{ SOCK_SHADER, 1, "Surface", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_SHADER, 1, "Volume", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_output_world(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_OUTPUT_WORLD, "World Output", NODE_CLASS_OUTPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_output_world_in, NULL);
|
||||
node_type_size(&ntype, 120, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, NULL);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -71,7 +71,7 @@ void register_node_type_sh_rgb(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_RGB, "RGB", NODE_CLASS_INPUT, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_rgb_out);
|
||||
node_type_init(&ntype, node_shader_init_rgb);
|
||||
node_type_size(&ntype, 140, 80, 140);
|
||||
|
||||
72
source/blender/nodes/shader/nodes/node_shader_tex_coord.c
Normal file
72
source/blender/nodes/shader/nodes/node_shader_tex_coord.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
#include "DNA_customdata_types.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_coord_out[]= {
|
||||
{ SOCK_VECTOR, 0, "Generated", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "UV", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Object", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Camera", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Window", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_VECTOR, 0, "Reflection", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_tex_coord(GPUMaterial *mat, bNode *UNUSED(node), GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
GPUNodeLink *orco = GPU_attribute(CD_ORCO, "");
|
||||
GPUNodeLink *mtface = GPU_attribute(CD_MTFACE, "");
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_coord", in, out,
|
||||
GPU_builtin(GPU_VIEW_POSITION), GPU_builtin(GPU_VIEW_NORMAL),
|
||||
GPU_builtin(GPU_INVERSE_VIEW_MATRIX), orco, mtface);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_coord(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_COORD, "Texture Coordinate", NODE_CLASS_INPUT, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_tex_coord_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_coord);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_environment_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_environment_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_environment(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexEnvironment *tex = MEM_callocN(sizeof(NodeTexEnvironment), "NodeTexEnvironment");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->color_space = SHD_COLORSPACE_SRGB;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_environment(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
Image *ima= (Image*)node->id;
|
||||
ImageUser *iuser= NULL;
|
||||
|
||||
if(!ima) {
|
||||
float black[4] = {0.0f, 0.0f, 0.0f, 1.0f};
|
||||
GPUNodeLink *vec = GPU_uniform(black);
|
||||
return GPU_stack_link(mat, "set_rgba", out, out, vec);
|
||||
}
|
||||
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_builtin(GPU_VIEW_POSITION);
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_environment", in, out, GPU_image(ima, iuser));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_environment(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_ENVIRONMENT, "Environment Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_environment_in, sh_node_tex_environment_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_environment);
|
||||
node_type_storage(&ntype, "NodeTexEnvironment", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_environment);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
81
source/blender/nodes/shader/nodes/node_shader_tex_gradient.c
Normal file
81
source/blender/nodes/shader/nodes/node_shader_tex_gradient.c
Normal file
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Gradienter Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** BLEND ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_gradient_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_gradient_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_gradient(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexGradient *tex = MEM_callocN(sizeof(NodeTexGradient), "NodeTexGradient");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->gradient_type = SHD_BLEND_LINEAR;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_gradient(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_gradient", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_gradient(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_GRADIENT, "Gradient Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_gradient_in, sh_node_tex_gradient_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_gradient);
|
||||
node_type_storage(&ntype, "NodeTexGradient", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_gradient);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
89
source/blender/nodes/shader/nodes/node_shader_tex_image.c
Normal file
89
source/blender/nodes/shader/nodes/node_shader_tex_image.c
Normal file
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_image_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_image_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_image(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexImage *tex = MEM_callocN(sizeof(NodeTexImage), "NodeTexImage");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->color_space = SHD_COLORSPACE_SRGB;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_image(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
Image *ima= (Image*)node->id;
|
||||
ImageUser *iuser= NULL;
|
||||
|
||||
if(!ima) {
|
||||
float black[4] = {0.0f, 0.0f, 0.0f, 1.0f};
|
||||
GPUNodeLink *vec = GPU_uniform(black);
|
||||
return GPU_stack_link(mat, "set_rgba", out, out, vec);
|
||||
}
|
||||
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_MTFACE, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_image", in, out, GPU_image(ima, iuser));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_image(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_IMAGE, "Image Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_image_in, sh_node_tex_image_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_image);
|
||||
node_type_storage(&ntype, "NodeTexImage", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_image);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
86
source/blender/nodes/shader/nodes/node_shader_tex_magic.c
Normal file
86
source/blender/nodes/shader/nodes/node_shader_tex_magic.c
Normal file
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_magic_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ SOCK_FLOAT, 1, "Scale", 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Distortion", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_magic_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_magic(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexMagic *tex = MEM_callocN(sizeof(NodeTexMagic), "NodeTexMagic");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->depth = 2;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_magic(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
NodeTexMagic *tex = (NodeTexMagic*)node->storage;
|
||||
float depth = tex->depth;
|
||||
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_magic", in, out, GPU_uniform(&depth));
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_magic(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_MAGIC, "Magic Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_magic_in, sh_node_tex_magic_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_magic);
|
||||
node_type_storage(&ntype, "NodeTexMagic", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_magic);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
87
source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c
Normal file
87
source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c
Normal file
@@ -0,0 +1,87 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** MUSGRAVE ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_musgrave_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ SOCK_FLOAT, 1, "Scale", 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Detail", 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 16.0f},
|
||||
{ SOCK_FLOAT, 1, "Dimension", 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Lacunarity", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Offset", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Gain", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_musgrave_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_musgrave(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexMusgrave *tex = MEM_callocN(sizeof(NodeTexMusgrave), "NodeTexMusgrave");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->musgrave_type = SHD_MUSGRAVE_FBM;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_musgrave(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_musgrave", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_musgrave(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_MUSGRAVE, "Musgrave Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_musgrave_in, sh_node_tex_musgrave_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_musgrave);
|
||||
node_type_storage(&ntype, "NodeTexMusgrave", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_musgrave);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
83
source/blender/nodes/shader/nodes/node_shader_tex_noise.c
Normal file
83
source/blender/nodes/shader/nodes/node_shader_tex_noise.c
Normal file
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** NOISE ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_noise_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ SOCK_FLOAT, 1, "Scale", 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Detail", 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 16.0f},
|
||||
{ SOCK_FLOAT, 1, "Distortion", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_noise_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_noise(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexNoise *tex = MEM_callocN(sizeof(NodeTexNoise), "NodeTexNoise");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_noise(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_noise", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_noise(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_NOISE, "Noise Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_noise_in, sh_node_tex_noise_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_noise);
|
||||
node_type_storage(&ntype, "NodeTexNoise", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_noise);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
83
source/blender/nodes/shader/nodes/node_shader_tex_sky.c
Normal file
83
source/blender/nodes/shader/nodes/node_shader_tex_sky.c
Normal file
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_sky_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_sky_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_sky(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexSky *tex = MEM_callocN(sizeof(NodeTexSky), "NodeTexSky");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->sun_direction[0] = 0.0f;
|
||||
tex->sun_direction[1] = 0.0f;
|
||||
tex->sun_direction[2] = 1.0f;
|
||||
tex->turbidity = 2.2f;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_sky(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_sky", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_sky(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_SKY, "Sky Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_sky_in, sh_node_tex_sky_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_sky);
|
||||
node_type_storage(&ntype, "NodeTexSky", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_sky);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
82
source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
Normal file
82
source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** VORONOI ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_voronoi_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ SOCK_FLOAT, 1, "Scale", 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_voronoi_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_voronoi(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexVoronoi *tex = MEM_callocN(sizeof(NodeTexVoronoi), "NodeTexVoronoi");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->coloring = SHD_VORONOI_INTENSITY;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_voronoi(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_voronoi", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_voronoi(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_VORONOI, "Voronoi Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_voronoi_in, sh_node_tex_voronoi_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_voronoi);
|
||||
node_type_storage(&ntype, "NodeTexVoronoi", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_voronoi);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
85
source/blender/nodes/shader/nodes/node_shader_tex_wave.c
Normal file
85
source/blender/nodes/shader/nodes/node_shader_tex_wave.c
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** WAVE ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_wave_in[]= {
|
||||
{ SOCK_VECTOR, 1, "Vector", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
|
||||
{ SOCK_FLOAT, 1, "Scale", 5.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Distortion", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ SOCK_FLOAT, 1, "Detail", 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 16.0f},
|
||||
{ SOCK_FLOAT, 1, "Detail Scale", 1.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_tex_wave_out[]= {
|
||||
{ SOCK_RGBA, 0, "Color", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 0, "Fac", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static void node_shader_init_tex_wave(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp))
|
||||
{
|
||||
NodeTexWave *tex = MEM_callocN(sizeof(NodeTexWave), "NodeTexWave");
|
||||
default_tex_mapping(&tex->base.tex_mapping);
|
||||
default_color_mapping(&tex->base.color_mapping);
|
||||
tex->wave_type = SHD_WAVE_BANDS;
|
||||
|
||||
node->storage = tex;
|
||||
}
|
||||
|
||||
static int node_shader_gpu_tex_wave(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out)
|
||||
{
|
||||
if(!in[0].link)
|
||||
in[0].link = GPU_attribute(CD_ORCO, "");
|
||||
|
||||
node_shader_gpu_tex_mapping(mat, node, in, out);
|
||||
|
||||
return GPU_stack_link(mat, "node_tex_wave", in, out);
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_tex_wave(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_TEX_WAVE, "Wave Texture", NODE_CLASS_TEXTURE, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_tex_wave_in, sh_node_tex_wave_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, node_shader_init_tex_wave);
|
||||
node_type_storage(&ntype, "NodeTexWave", node_free_standard_storage, node_copy_standard_storage);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_tex_wave);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ void register_node_type_sh_rgbtobw(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_RGBTOBW, "RGB to BW", NODE_CLASS_CONVERTOR, 0);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_rgbtobw_in, sh_node_rgbtobw_out);
|
||||
node_type_size(&ntype, 80, 40, 120);
|
||||
node_type_exec(&ntype, node_shader_exec_rgbtobw);
|
||||
|
||||
@@ -71,7 +71,7 @@ void register_node_type_sh_value(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_VALUE, "Value", NODE_CLASS_INPUT, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, NULL, sh_node_value_out);
|
||||
node_type_init(&ntype, node_shader_init_value);
|
||||
node_type_size(&ntype, 80, 50, 120);
|
||||
|
||||
@@ -135,7 +135,7 @@ void register_node_type_sh_vect_math(ListBase *lb)
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_VECT_MATH, "Vector Math", NODE_CLASS_CONVERTOR, NODE_OPTIONS);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING);
|
||||
node_type_compatibility(&ntype, NODE_OLD_SHADING|NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_vect_math_in, sh_node_vect_math_out);
|
||||
node_type_size(&ntype, 80, 75, 140);
|
||||
node_type_label(&ntype, node_vect_math_label);
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_volume_isotropic_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Density", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_volume_isotropic_out[]= {
|
||||
{ SOCK_SHADER, 0, "Volume"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_volume_isotropic(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_volume_isotropic(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_VOLUME_ISOTROPIC, "Isotropic Volume", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_volume_isotropic_in, sh_node_volume_isotropic_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_volume_isotropic);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* $Id: node_shader_output.c 32517 2010-10-16 14:32:17Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* The Original Code is: all of this file.
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "../node_shader_util.h"
|
||||
|
||||
/* **************** OUTPUT ******************** */
|
||||
|
||||
static bNodeSocketTemplate sh_node_volume_transparent_in[]= {
|
||||
{ SOCK_RGBA, 1, "Color", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
|
||||
{ SOCK_FLOAT, 1, "Density", 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static bNodeSocketTemplate sh_node_volume_transparent_out[]= {
|
||||
{ SOCK_SHADER, 0, "Volume"},
|
||||
{ -1, 0, "" }
|
||||
};
|
||||
|
||||
static int node_shader_gpu_volume_transparent(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* node type definition */
|
||||
void register_node_type_sh_volume_transparent(ListBase *lb)
|
||||
{
|
||||
static bNodeType ntype;
|
||||
|
||||
node_type_base(&ntype, SH_NODE_VOLUME_TRANSPARENT, "Transparent Volume", NODE_CLASS_SHADER, 0);
|
||||
node_type_compatibility(&ntype, NODE_NEW_SHADING);
|
||||
node_type_socket_templates(&ntype, sh_node_volume_transparent_in, sh_node_volume_transparent_out);
|
||||
node_type_size(&ntype, 150, 60, 200);
|
||||
node_type_init(&ntype, NULL);
|
||||
node_type_storage(&ntype, "", NULL, NULL);
|
||||
node_type_exec(&ntype, NULL);
|
||||
node_type_gpu(&ntype, node_shader_gpu_volume_transparent);
|
||||
|
||||
nodeRegisterType(lb, &ntype);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user