From 072c5ffd786454d2f6743028ccb0c7fb32eba0a4 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 12 Apr 2019 17:45:09 -0700 Subject: [PATCH] improve code readibility --- shaders/src/shadowing.fs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/shaders/src/shadowing.fs b/shaders/src/shadowing.fs index ba22a13dab..709425a00b 100644 --- a/shaders/src/shadowing.fs +++ b/shaders/src/shadowing.fs @@ -41,10 +41,14 @@ vec2 computeReceiverPlaneDepthBias(const vec3 position) { // see: GDC '06: Shadow Mapping: GPU-based Tips and Techniques vec2 bias; #if SHADOW_RECEIVER_PLANE_DEPTH_BIAS == SHADOW_RECEIVER_PLANE_DEPTH_BIAS_ENABLED - vec3 dx = dFdx(position); - vec3 dy = dFdy(position); - bias = vec2(dy.y * dx.z - dx.y * dy.z, dx.x * dy.z - dy.x * dx.z); - bias *= 1.0 / ((dx.x * dy.y) - (dx.y * dy.x)); + vec3 du = dFdx(position); + vec3 dv = dFdy(position); + + // Chain rule we use: + // | du.x du.y |^-T | dv.y -du.y |T | dv.y -dv.x | + // D * | dv.x dv.y | = | -dv.x du.x | = | -du.y du.x | + + bias = inverse(mat2(du.xy, dv.xy)) * vec2(du.z, dv.z); #else bias = vec2(0.0); #endif