From a7d14cb444e5ef4bcf440edfe0c9865270f19985 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Fri, 21 Dec 2018 11:37:10 +0100 Subject: [PATCH] Probe fixes --- Shaders/probe_cubemap/probe_cubemap.frag.glsl | 2 +- Shaders/probe_planar/probe_planar.frag.glsl | 3 +++ Sources/armory/renderpath/Inc.hx | 5 +++-- Sources/armory/renderpath/RenderPathDeferred.hx | 4 +++- blender/arm/material/make_transluc.py | 2 ++ 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Shaders/probe_cubemap/probe_cubemap.frag.glsl b/Shaders/probe_cubemap/probe_cubemap.frag.glsl index 6de83221..2bfa7afa 100644 --- a/Shaders/probe_cubemap/probe_cubemap.frag.glsl +++ b/Shaders/probe_cubemap/probe_cubemap.frag.glsl @@ -4,9 +4,9 @@ #include "std/gbuffer.glsl" uniform samplerCube probeTex; +uniform sampler2D gbufferD; uniform sampler2D gbuffer0; uniform sampler2D gbuffer1; -uniform sampler2D gbufferD; uniform mat4 invVP; uniform vec3 probep; uniform vec3 eye; diff --git a/Shaders/probe_planar/probe_planar.frag.glsl b/Shaders/probe_planar/probe_planar.frag.glsl index 208a3197..95db0683 100644 --- a/Shaders/probe_planar/probe_planar.frag.glsl +++ b/Shaders/probe_planar/probe_planar.frag.glsl @@ -39,6 +39,9 @@ void main() { vec3 wp = getPos2(invVP, depth, texCoord); vec4 pp = probeVP * vec4(wp.xyz, 1.0); vec2 tc = (pp.xy / pp.w) * 0.5 + 0.5; + #ifdef HLSL + tc.y = 1.0 - tc.y; + #endif vec2 enc = g0.rg; vec3 n; diff --git a/Sources/armory/renderpath/Inc.hx b/Sources/armory/renderpath/Inc.hx index 09e744f9..7bbba079 100644 --- a/Sources/armory/renderpath/Inc.hx +++ b/Sources/armory/renderpath/Inc.hx @@ -172,7 +172,7 @@ class Inc { // Resize shadow map var l = path.light; if (l.data.raw.type == "sun" && l.data.raw.shadowmap_size != config.rp_shadowmap_cascade) { - l.data.raw.shadowmap_size = config.rp_shadowmap; + l.data.raw.shadowmap_size = config.rp_shadowmap_cascade; var rt = path.renderTargets.get("shadowMap"); if (rt != null) { rt.unload(); @@ -180,7 +180,8 @@ class Inc { } } else if (l.data.raw.shadowmap_size != config.rp_shadowmap_cube) { - rt = path.renderTargets.get("shadowMapCube"); + l.data.raw.shadowmap_size = config.rp_shadowmap_cube; + var rt = path.renderTargets.get("shadowMapCube"); if (rt != null) { rt.unload(); path.renderTargets.remove("shadowMapCube"); diff --git a/Sources/armory/renderpath/RenderPathDeferred.hx b/Sources/armory/renderpath/RenderPathDeferred.hx index d0377430..f6318d0f 100644 --- a/Sources/armory/renderpath/RenderPathDeferred.hx +++ b/Sources/armory/renderpath/RenderPathDeferred.hx @@ -675,7 +675,6 @@ class RenderPathDeferred { path.drawShader("shader_datas/deferred_light/deferred_light_VoxelAOvar") : path.drawShader("shader_datas/deferred_light/deferred_light"); #end - path.setDepthFrom("tex", "gbuffer0"); // Re-bind depth #if rp_probes if (!path.isProbe) { @@ -685,6 +684,7 @@ class RenderPathDeferred { if (!p.visible || p.culled) continue; path.currentProbeIndex = i; path.setTarget("tex"); + path.bindTarget("_main", "gbufferD"); path.bindTarget("gbuffer0", "gbuffer0"); path.bindTarget("gbuffer1", "gbuffer1"); path.bindTarget(p.raw.name, "probeTex"); @@ -698,6 +698,8 @@ class RenderPathDeferred { } #end + path.setDepthFrom("tex", "gbuffer0"); // Re-bind depth + // #if rp_volumetriclight // { // path.setTarget("bufvola"); diff --git a/blender/arm/material/make_transluc.py b/blender/arm/material/make_transluc.py index a0748420..5a2bb560 100644 --- a/blender/arm/material/make_transluc.py +++ b/blender/arm/material/make_transluc.py @@ -25,6 +25,8 @@ def make(context_id): frag.main = frag.main[:frag.main.rfind('fragColor')] frag.write('\n') + frag.add_uniform('vec3 lightColor', link='_lightColor') + frag.write('float visibility = 1.0;') frag.write('vec4 premultipliedReflect = vec4(vec3(direct * lightColor * visibility + indirect * occlusion) * opacity, opacity);') frag.write('float fragZ = wvpposition.z / wvpposition.w;')