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/intern
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/intern')
-rw-r--r--source/blender/gpu/intern/gpu_shader.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_shader.c b/source/blender/gpu/intern/gpu_shader.c
index 5cfb323bc4b..14f2764b009 100644
--- a/source/blender/gpu/intern/gpu_shader.c
+++ b/source/blender/gpu/intern/gpu_shader.c
@@ -68,6 +68,7 @@ static struct GPUShadersGlobal {
GPUShader *sep_gaussian_blur;
GPUShader *smoke;
GPUShader *smoke_fire;
+ GPUShader *smoke_coba;
/* cache for shader fx. Those can exist in combinations so store them here */
GPUShader *fx_shaders[MAX_FX_SHADERS * 2];
} shaders;
@@ -623,6 +624,13 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader)
NULL, NULL, NULL, 0, 0, 0);
retval = GG.shaders.smoke_fire;
break;
+ case GPU_SHADER_SMOKE_COBA:
+ if (!GG.shaders.smoke_coba)
+ GG.shaders.smoke_coba = GPU_shader_create(
+ datatoc_gpu_shader_smoke_vert_glsl, datatoc_gpu_shader_smoke_frag_glsl,
+ NULL, NULL, "#define USE_COBA;\n", 0, 0, 0);
+ retval = GG.shaders.smoke_coba;
+ break;
}
if (retval == NULL)
@@ -734,6 +742,11 @@ void GPU_shader_free_builtin_shaders(void)
GG.shaders.smoke_fire = NULL;
}
+ if (GG.shaders.smoke_coba) {
+ GPU_shader_free(GG.shaders.smoke_coba);
+ GG.shaders.smoke_coba = NULL;
+ }
+
for (i = 0; i < 2 * MAX_FX_SHADERS; ++i) {
if (GG.shaders.fx_shaders[i]) {
GPU_shader_free(GG.shaders.fx_shaders[i]);