Simulations: Use some shader nodes in simulation node trees
Reviewers: brecht Differential Revision: https://developer.blender.org/D7422
This commit is contained in:
		@@ -501,6 +501,30 @@ simulation_node_categories = [
 | 
			
		||||
        NodeItem("SimulationNodeExecuteCondition"),
 | 
			
		||||
        NodeItem("SimulationNodeMultiExecute"),
 | 
			
		||||
    ]),
 | 
			
		||||
    SimulationNodeCategory("SIM_NOISE", "Noise", items=[
 | 
			
		||||
        NodeItem("ShaderNodeTexNoise"),
 | 
			
		||||
        NodeItem("ShaderNodeTexWhiteNoise"),
 | 
			
		||||
    ]),
 | 
			
		||||
    SimulationNodeCategory("SIM_COLOR", "Color", items=[
 | 
			
		||||
        NodeItem("ShaderNodeMixRGB"),
 | 
			
		||||
        NodeItem("ShaderNodeInvert"),
 | 
			
		||||
        NodeItem("ShaderNodeHueSaturation"),
 | 
			
		||||
        NodeItem("ShaderNodeGamma"),
 | 
			
		||||
        NodeItem("ShaderNodeBrightContrast"),
 | 
			
		||||
    ]),
 | 
			
		||||
    SimulationNodeCategory("SIM_CONVERTER", "Converter", items=[
 | 
			
		||||
        NodeItem("ShaderNodeMapRange"),
 | 
			
		||||
        NodeItem("ShaderNodeClamp"),
 | 
			
		||||
        NodeItem("ShaderNodeMath"),
 | 
			
		||||
        NodeItem("ShaderNodeValToRGB"),
 | 
			
		||||
        NodeItem("ShaderNodeVectorMath"),
 | 
			
		||||
        NodeItem("ShaderNodeSeparateRGB"),
 | 
			
		||||
        NodeItem("ShaderNodeCombineRGB"),
 | 
			
		||||
        NodeItem("ShaderNodeSeparateXYZ"),
 | 
			
		||||
        NodeItem("ShaderNodeCombineXYZ"),
 | 
			
		||||
        NodeItem("ShaderNodeSeparateHSV"),
 | 
			
		||||
        NodeItem("ShaderNodeCombineHSV"),
 | 
			
		||||
    ]),
 | 
			
		||||
    SimulationNodeCategory("SIM_GROUP", "Group", items=node_group_items),
 | 
			
		||||
    SimulationNodeCategory("SIM_LAYOUT", "Layout", items=[
 | 
			
		||||
        NodeItem("NodeFrame"),
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,11 @@ bool sh_node_poll_default(bNodeType *UNUSED(ntype), bNodeTree *ntree)
 | 
			
		||||
  return STREQ(ntree->idname, "ShaderNodeTree");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool sh_fn_poll_default(bNodeType *UNUSED(ntype), bNodeTree *ntree)
 | 
			
		||||
{
 | 
			
		||||
  return STREQ(ntree->idname, "ShaderNodeTree") || STREQ(ntree->idname, "SimulationNodeTree");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sh_node_type_base(
 | 
			
		||||
    struct bNodeType *ntype, int type, const char *name, short nclass, short flag)
 | 
			
		||||
{
 | 
			
		||||
@@ -42,6 +47,12 @@ void sh_node_type_base(
 | 
			
		||||
  ntype->update_internal_links = node_update_internal_links_default;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void sh_fn_node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
 | 
			
		||||
{
 | 
			
		||||
  sh_node_type_base(ntype, type, name, nclass, flag);
 | 
			
		||||
  ntype->poll = sh_fn_poll_default;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ****** */
 | 
			
		||||
 | 
			
		||||
void nodestack_get_vec(float *in, short type_in, bNodeStack *ns)
 | 
			
		||||
 
 | 
			
		||||
@@ -72,6 +72,8 @@
 | 
			
		||||
bool sh_node_poll_default(struct bNodeType *ntype, struct bNodeTree *ntree);
 | 
			
		||||
void sh_node_type_base(
 | 
			
		||||
    struct bNodeType *ntype, int type, const char *name, short nclass, short flag);
 | 
			
		||||
void sh_fn_node_type_base(
 | 
			
		||||
    struct bNodeType *ntype, int type, const char *name, short nclass, short flag);
 | 
			
		||||
 | 
			
		||||
/* ********* exec data struct, remains internal *********** */
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ void register_node_type_sh_brightcontrast(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_BRIGHTCONTRAST, "Bright/Contrast", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_BRIGHTCONTRAST, "Bright/Contrast", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_brightcontrast_in, sh_node_brightcontrast_out);
 | 
			
		||||
  node_type_init(&ntype, NULL);
 | 
			
		||||
  node_type_storage(&ntype, "", NULL, NULL);
 | 
			
		||||
 
 | 
			
		||||
@@ -54,7 +54,7 @@ void register_node_type_sh_clamp(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_CLAMP, "Clamp", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_CLAMP, "Clamp", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_clamp_in, sh_node_clamp_out);
 | 
			
		||||
  node_type_init(&ntype, node_shader_init_clamp);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_clamp);
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ void register_node_type_sh_gamma(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_GAMMA, "Gamma", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_GAMMA, "Gamma", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_gamma_in, sh_node_gamma_out);
 | 
			
		||||
  node_type_init(&ntype, NULL);
 | 
			
		||||
  node_type_storage(&ntype, "", NULL, NULL);
 | 
			
		||||
 
 | 
			
		||||
@@ -89,7 +89,7 @@ void register_node_type_sh_hue_sat(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_HUE_SAT, "Hue Saturation Value", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_HUE_SAT, "Hue Saturation Value", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_hue_sat_in, sh_node_hue_sat_out);
 | 
			
		||||
  node_type_size_preset(&ntype, NODE_SIZE_MIDDLE);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_hue_sat);
 | 
			
		||||
 
 | 
			
		||||
@@ -69,7 +69,7 @@ void register_node_type_sh_invert(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_INVERT, "Invert", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_invert_in, sh_node_invert_out);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_invert);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_invert);
 | 
			
		||||
 
 | 
			
		||||
@@ -81,7 +81,7 @@ void register_node_type_sh_map_range(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_MAP_RANGE, "Map Range", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_MAP_RANGE, "Map Range", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_map_range_in, sh_node_map_range_out);
 | 
			
		||||
  node_type_init(&ntype, node_shader_init_map_range);
 | 
			
		||||
  node_type_update(&ntype, node_shader_update_map_range);
 | 
			
		||||
 
 | 
			
		||||
@@ -105,7 +105,7 @@ void register_node_type_sh_math(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_MATH, "Math", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_MATH, "Math", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_math_in, sh_node_math_out);
 | 
			
		||||
  node_type_label(&ntype, node_math_label);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_math);
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ void register_node_type_sh_mix_rgb(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_MIX_RGB, "Mix", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_MIX_RGB, "Mix", NODE_CLASS_OP_COLOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_mix_rgb_in, sh_node_mix_rgb_out);
 | 
			
		||||
  node_type_label(&ntype, node_blend_label);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_mix_rgb);
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@ void register_node_type_sh_sephsv(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_SEPHSV, "Separate HSV", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_SEPHSV, "Separate HSV", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_sephsv_in, sh_node_sephsv_out);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_sephsv);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_sephsv);
 | 
			
		||||
@@ -109,7 +109,7 @@ void register_node_type_sh_combhsv(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_COMBHSV, "Combine HSV", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_COMBHSV, "Combine HSV", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_combhsv_in, sh_node_combhsv_out);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_combhsv);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_combhsv);
 | 
			
		||||
 
 | 
			
		||||
@@ -63,7 +63,7 @@ void register_node_type_sh_seprgb(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_SEPRGB, "Separate RGB", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_SEPRGB, "Separate RGB", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_seprgb_in, sh_node_seprgb_out);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_seprgb);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_seprgb);
 | 
			
		||||
@@ -113,7 +113,7 @@ void register_node_type_sh_combrgb(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_COMBRGB, "Combine RGB", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_COMBRGB, "Combine RGB", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_combrgb_in, sh_node_combrgb_out);
 | 
			
		||||
  node_type_exec(&ntype, NULL, NULL, node_shader_exec_combrgb);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_combrgb);
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,7 @@ void register_node_type_sh_sepxyz(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_SEPXYZ, "Separate XYZ", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_SEPXYZ, "Separate XYZ", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_sepxyz_in, sh_node_sepxyz_out);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_sepxyz);
 | 
			
		||||
 | 
			
		||||
@@ -80,7 +80,7 @@ void register_node_type_sh_combxyz(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_COMBXYZ, "Combine XYZ", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_COMBXYZ, "Combine XYZ", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_combxyz_in, sh_node_combxyz_out);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_combxyz);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -91,7 +91,7 @@ void register_node_type_sh_tex_noise(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_TEX_NOISE, "Noise Texture", NODE_CLASS_TEXTURE, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_TEX_NOISE, "Noise Texture", NODE_CLASS_TEXTURE, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_tex_noise_in, sh_node_tex_noise_out);
 | 
			
		||||
  node_type_init(&ntype, node_shader_init_tex_noise);
 | 
			
		||||
  node_type_storage(
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,8 @@ void register_node_type_sh_tex_white_noise(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_TEX_WHITE_NOISE, "White Noise Texture", NODE_CLASS_TEXTURE, 0);
 | 
			
		||||
  sh_fn_node_type_base(
 | 
			
		||||
      &ntype, SH_NODE_TEX_WHITE_NOISE, "White Noise Texture", NODE_CLASS_TEXTURE, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_tex_white_noise_in, sh_node_tex_white_noise_out);
 | 
			
		||||
  node_type_init(&ntype, node_shader_init_tex_white_noise);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_tex_white_noise);
 | 
			
		||||
 
 | 
			
		||||
@@ -125,7 +125,7 @@ void register_node_type_sh_valtorgb(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_VALTORGB, "ColorRamp", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_VALTORGB, "ColorRamp", NODE_CLASS_CONVERTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_valtorgb_in, sh_node_valtorgb_out);
 | 
			
		||||
  node_type_init(&ntype, node_shader_init_valtorgb);
 | 
			
		||||
  node_type_size_preset(&ntype, NODE_SIZE_LARGE);
 | 
			
		||||
 
 | 
			
		||||
@@ -134,7 +134,7 @@ void register_node_type_sh_vect_math(void)
 | 
			
		||||
{
 | 
			
		||||
  static bNodeType ntype;
 | 
			
		||||
 | 
			
		||||
  sh_node_type_base(&ntype, SH_NODE_VECTOR_MATH, "Vector Math", NODE_CLASS_OP_VECTOR, 0);
 | 
			
		||||
  sh_fn_node_type_base(&ntype, SH_NODE_VECTOR_MATH, "Vector Math", NODE_CLASS_OP_VECTOR, 0);
 | 
			
		||||
  node_type_socket_templates(&ntype, sh_node_vector_math_in, sh_node_vector_math_out);
 | 
			
		||||
  node_type_label(&ntype, node_vector_math_label);
 | 
			
		||||
  node_type_gpu(&ntype, gpu_shader_vector_math);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user