Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin Dietrich <kevin.dietrich@mailoo.org>2016-10-30 14:29:05 +0300
committerKévin Dietrich <kevin.dietrich@mailoo.org>2016-10-30 14:29:05 +0300
commitb6d35e1fa74076e5072e53dad63dc712f85a7027 (patch)
tree2932371b73c1119957c4d2d4e8b47e1d3327b4aa /source/blender/gpu/shaders
parent4e68f48227e228fbf75736005ceed4cf1cb55215 (diff)
Viewport smoke: add support to render the volume using a color ramp.
This is yet another debug option that allows to render an arbitrary simulation field by using a color ramp to inspect its voxel values. Note that when using this, fire rendering is turned off. Reviewers: plasmasolutions, gottfried Differential Revision: https://developer.blender.org/D1733
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r--source/blender/gpu/shaders/gpu_shader_smoke_frag.glsl12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_smoke_frag.glsl b/source/blender/gpu/shaders/gpu_shader_smoke_frag.glsl
index fd790009e02..6ded453225e 100644
--- a/source/blender/gpu/shaders/gpu_shader_smoke_frag.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_smoke_frag.glsl
@@ -8,10 +8,17 @@ uniform float density_scale;
uniform sampler3D soot_texture;
uniform sampler3D shadow_texture;
+#ifdef USE_COBA
+uniform sampler1D transfer_texture;
+uniform sampler3D color_band_texture;
+#endif
+
void main()
{
/* compute color and density from volume texture */
vec4 soot = texture3D(soot_texture, coords);
+
+#ifndef USE_COBA
vec3 soot_color;
if (soot.a != 0) {
soot_color = active_color * soot.rgb / soot.a;
@@ -31,6 +38,11 @@ void main()
/* premultiply alpha */
vec4 color = vec4(soot_alpha * soot_color, soot_alpha);
+#else
+ float color_band = texture3D(color_band_texture, coords).r;
+ vec4 transfer_function = texture1D(transfer_texture, color_band);
+ vec4 color = transfer_function * density_scale;
+#endif
gl_FragColor = color;
}