diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-06-13 20:24:17 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-06-13 20:26:52 +0300 |
commit | 711a50c5ea4de65be1512a1dbfa82b83ef993f56 (patch) | |
tree | c068e22657942f7a9cb8777e74a46ff54a111f5d /source/blender/gpu | |
parent | a3c630aebb34e88de3a4820a0bb0f4359e13570d (diff) | |
parent | 4d58fac1b4ddcf424d78ee96b404445e8ccc6527 (diff) |
Merge branch 'master' into blender2.8
This includes making Eevee match Cycles behavior of inserting an emission
node when linking colors to closures.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/intern/gpu_codegen.c | 17 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 32 |
2 files changed, 14 insertions, 35 deletions
diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index 0dd9d1f0908..c1e1077e14c 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -416,15 +416,26 @@ static void codegen_convert_datatype(DynStr *ds, int from, int to, const char *t else if (from == GPU_FLOAT) BLI_dynstr_appendf(ds, "vec3(%s, %s, %s)", name, name, name); } - else { + else if (to == GPU_VEC4) { if (from == GPU_VEC3) BLI_dynstr_appendf(ds, "vec4(%s, 1.0)", name); else if (from == GPU_VEC2) BLI_dynstr_appendf(ds, "vec4(%s.r, %s.r, %s.r, %s.g)", name, name, name, name); else if (from == GPU_FLOAT) BLI_dynstr_appendf(ds, "vec4(%s, %s, %s, 1.0)", name, name, name); - else /* can happen with closure */ - BLI_dynstr_append(ds, name); + } + else if (to == GPU_CLOSURE) { + if (from == GPU_VEC4) + BLI_dynstr_appendf(ds, "closure_emission(%s.rgb)", name); + else if (from == GPU_VEC3) + BLI_dynstr_appendf(ds, "closure_emission(%s.rgb)", name); + else if (from == GPU_VEC2) + BLI_dynstr_appendf(ds, "closure_emission(%s.rrr)", name); + else if (from == GPU_FLOAT) + BLI_dynstr_appendf(ds, "closure_emission(vec3(%s, %s, %s))", name, name, name); + } + else { + BLI_dynstr_append(ds, name); } } diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 4c77dd038af..1a07b26ff4d 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -8,38 +8,6 @@ uniform mat3 NormalMatrix; uniform mat4 ModelMatrixInverse; #endif -/* Old glsl mode compat. */ - -#ifndef CLOSURE_DEFAULT - -struct Closure { - vec3 radiance; - float opacity; -}; - -#define CLOSURE_DEFAULT Closure(vec3(0.0), 1.0) - -Closure closure_mix(Closure cl1, Closure cl2, float fac) -{ - Closure cl; - cl.radiance = mix(cl1.radiance, cl2.radiance, fac); - cl.opacity = mix(cl1.opacity, cl2.opacity, fac); - return cl; -} - -Closure closure_add(Closure cl1, Closure cl2) -{ - Closure cl; - cl.radiance = cl1.radiance + cl2.radiance; - cl.opacity = cl1.opacity + cl2.opacity; - return cl; -} - -Closure nodetree_exec(void); /* Prototype */ - -#endif /* CLOSURE_DEFAULT */ - - /* Converters */ float convert_rgba_to_float(vec4 color) |