From 95ff36c589a99103bf424545c2cc4edbf1d15c62 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Wed, 7 Oct 2020 10:33:03 +0200 Subject: [PATCH] Fix world color when envmap is hidden --- Assets/painter/world_pass.arm | Bin 664 -> 674 bytes Shaders/painter/world_pass.frag.glsl | 4 ++-- Sources/arm/render/Uniforms.hx | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Assets/painter/world_pass.arm b/Assets/painter/world_pass.arm index 97056515161c1b8544b79f927fac5a5c24a87bdb..a3e1df150dcb1577071f50668100275639887de4 100644 GIT binary patch delta 61 zcmbQix`=hc14DiW28PtUvfRW1m&B69@cg2jl-n#ov7F4j?AroBMm(DAW_HGji~w)< B6e|D# delta 51 wcmZ3)I)in>19dJ228PtUvfRW1m&B69+blqCPG(;AZEheV9wD(=kZ~d-0HX{L5dZ)H diff --git a/Shaders/painter/world_pass.frag.glsl b/Shaders/painter/world_pass.frag.glsl index b5250821..84d9c3ec 100644 --- a/Shaders/painter/world_pass.frag.glsl +++ b/Shaders/painter/world_pass.frag.glsl @@ -3,13 +3,13 @@ #include "../std/math.glsl" uniform sampler2D envmap; -uniform vec4 envmapData; // angle, sin(angle), cos(angle), strength +uniform vec4 envmapDataWorld; // angle, sin(angle), cos(angle), strength in vec3 normal; out vec4 fragColor; void main() { - vec4 envmapDataLocal = envmapData; // TODO: SPIRV workaround + vec4 envmapDataLocal = envmapDataWorld; // TODO: SPIRV workaround vec3 n = normalize(normal); fragColor.rgb = texture(envmap, envMapEquirect(n, envmapDataLocal.x)).rgb * envmapDataLocal.w; fragColor.a = 0.0; // Mark as non-opaque diff --git a/Sources/arm/render/Uniforms.hx b/Sources/arm/render/Uniforms.hx index 12e5fcd0..bb615c2c 100644 --- a/Sources/arm/render/Uniforms.hx +++ b/Sources/arm/render/Uniforms.hx @@ -346,6 +346,10 @@ class Uniforms { vec.set(Context.envmapAngle, Math.sin(-Context.envmapAngle), Math.cos(-Context.envmapAngle), Scene.active.world.probe.raw.strength); return vec; } + case "_envmapDataWorld": { + vec.set(Context.envmapAngle, Math.sin(-Context.envmapAngle), Math.cos(-Context.envmapAngle), Context.showEnvmap ? Scene.active.world.probe.raw.strength : 4.0); + return vec; + } } #end return null;