Eevee: Volumetrics: Add Volume Absorption node.
authorClément Foucault <foucault.clem@gmail.com>
Tue, 4 Jul 2017 13:29:18 +0000 (15:29 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Wed, 5 Jul 2017 16:21:06 +0000 (18:21 +0200)
source/blender/gpu/shaders/gpu_shader_material.glsl
source/blender/nodes/shader/nodes/node_shader_volume_absorption.c

index 5458eb911990891721ed5f600047cbdef2eb9076..7e6397179050966f614715668ab811bc8950d235 100644 (file)
@@ -2955,6 +2955,15 @@ void node_volume_scatter(vec4 color, float density, float anisotropy, out Closur
 #endif
 }
 
+void node_volume_absorption(vec4 color, float density, out Closure result)
+{
+#ifdef VOLUMETRICS
+       result = Closure((1.0 - color.rgb) * density, vec3(0.0), vec3(0.0), 0.0);
+#else
+       result = CLOSURE_DEFAULT;
+#endif
+}
+
 /* closures */
 
 void node_mix_shader(float fac, Closure shader1, Closure shader2, out Closure shader)
index 4861871e8d35a0e9c7495b0111d38a6459885865..03264e0acb6ec80bcc7877f9a74109665a0c52b5 100644 (file)
@@ -40,9 +40,9 @@ static bNodeSocketTemplate sh_node_volume_absorption_out[] = {
        {       -1, 0, ""       }
 };
 
-static int node_shader_gpu_volume_absorption(GPUMaterial *UNUSED(mat), bNode *UNUSED(node), bNodeExecData *UNUSED(execdata), GPUNodeStack *UNUSED(in), GPUNodeStack *UNUSED(out))
+static int node_shader_gpu_volume_absorption(GPUMaterial *mat, bNode *UNUSED(node), bNodeExecData *UNUSED(execdata), GPUNodeStack *in, GPUNodeStack *out)
 {
-       return false;
+       return GPU_stack_link(mat, "node_volume_absorption", in, out);
 }
 
 /* node type definition */