From 6f9a9278ecf900bf6d849012c4af2e1ac2cab620 Mon Sep 17 00:00:00 2001 From: Lunkhound Date: Sun, 17 Jan 2016 23:05:40 -0800 Subject: [PATCH] removed z coord adjustment in shadow2D() shader builtin for HLSL versions --- .../15-shadowmaps-simple/fs_sms_shadow_pd.sc | 6 +++++- .../shadowmaps_simple.cpp | 11 +++++++++-- examples/runtime/shaders/dx11/fs_sms_mesh.bin | Bin 4815 -> 4239 bytes .../runtime/shaders/dx11/fs_sms_shadow_pd.bin | Bin 428 -> 477 bytes examples/runtime/shaders/dx9/fs_sms_mesh.bin | Bin 2464 -> 2468 bytes .../runtime/shaders/dx9/fs_sms_shadow_pd.bin | Bin 269 -> 354 bytes .../runtime/shaders/gles/fs_sms_shadow_pd.bin | Bin 302 -> 399 bytes .../runtime/shaders/glsl/fs_sms_shadow_pd.bin | Bin 290 -> 381 bytes .../shaders/metal/fs_sms_shadow_pd.bin | Bin 623 -> 700 bytes src/bgfx_shader.sh | 10 +++++----- 10 files changed, 19 insertions(+), 8 deletions(-) diff --git a/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc b/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc index 04d5896c..2a046f73 100644 --- a/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc +++ b/examples/15-shadowmaps-simple/fs_sms_shadow_pd.sc @@ -7,8 +7,12 @@ $input v_position #include "../common/common.sh" +uniform vec4 u_depthScaleOffset; // for GL, map depth values into [0, 1] range +#define u_depthScale u_depthScaleOffset.x +#define u_depthOffset u_depthScaleOffset.y + void main() { - float depth = v_position.z/v_position.w * 0.5 + 0.5; + float depth = v_position.z/v_position.w * u_depthScale + u_depthOffset; gl_FragColor = packFloatToRgba(depth); } diff --git a/examples/15-shadowmaps-simple/shadowmaps_simple.cpp b/examples/15-shadowmaps-simple/shadowmaps_simple.cpp index 848c9400..3ef2e057 100644 --- a/examples/15-shadowmaps-simple/shadowmaps_simple.cpp +++ b/examples/15-shadowmaps-simple/shadowmaps_simple.cpp @@ -91,6 +91,13 @@ int _main_(int _argc, char** _argv) bgfx::UniformHandle u_shadowMap = bgfx::createUniform("u_shadowMap", bgfx::UniformType::Int1); bgfx::UniformHandle u_lightPos = bgfx::createUniform("u_lightPos", bgfx::UniformType::Vec4); bgfx::UniformHandle u_lightMtx = bgfx::createUniform("u_lightMtx", bgfx::UniformType::Mat4); + // When using GL clip space depth range [-1, 1] and packing depth into color buffer, we need to + // adjust the depth range to be [0, 1] for writing to the color buffer + bgfx::UniformHandle u_depthScaleOffset = bgfx::createUniform("u_depthScaleOffset", bgfx::UniformType::Vec4); + const float depthScale = flipV ? 0.5f : 1.0f; + const float depthOffset = flipV ? 0.5f : 0.0f; + float depthScaleOffset[4] = {depthScale, depthOffset, 0.0f, 0.0f}; + bgfx::setUniform(u_depthScaleOffset, depthScaleOffset); // Vertex declarations. bgfx::VertexDecl PosNormalDecl; @@ -303,8 +310,8 @@ int _main_(int _argc, char** _argv) { 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, sy, 0.0f, 0.0f, - 0.0f, 0.0f, 0.5f, 0.0f, - 0.5f, 0.5f, 0.5f, 1.0f, + 0.0f, 0.0f, depthScale, 0.0f, + 0.5f, 0.5f, depthOffset, 1.0f, }; float mtxTmp[16]; diff --git a/examples/runtime/shaders/dx11/fs_sms_mesh.bin b/examples/runtime/shaders/dx11/fs_sms_mesh.bin index 44fd0cfd999c17c41ad87ae5c16fa5de8f1b1776..bd64ce32debe524e008e6e52d6634a100db50499 100644 GIT binary patch delta 161 zcmX@F+OIf4S0+ZlCBn(M^-Z+=lf#dqvf6?!^_+g+&B(yO5F;?r^BPwMKLdjUkavrD zvnFF7^W@tsCnm4w^O(%fHfQpAwkMP0xjZJzbA*8D`#^fVp!Z}hR*A{GI2(atPbQ~x z&jG5Bm|V}}GFe|BWb$hc52zaP$((#mK)E@S^ZDlh<>pL&FA%}VGWi3C^XBz}3XA~v C!aFtq delta 757 zcmeBIJg+)IS7wfoON5j2x9pZm)wFvL3x4z|#dCx$WMp7qm?JdN^BUI*K?Vi~ATNt$ zvnFF7v!)RP1E&*%08oU1K?_PVI)J$j5V~Q%I|Bo^(_{r6`N_9gmZ*SqG(lBb;m|R; zp7jZF3X|E0ROrq=hd2}6*#jn@=k_5^aXkmo)_Y7|%}J~ixQJBvpC@9nHMa|qZsjJ@ z)OwDj$+bL9#F_e^he%UFZvD(lv|B?ack_7==Y)C=kID6XJdA9U*u^LNa~Ke%YjZxo G0wVwqmu>X` diff --git a/examples/runtime/shaders/dx11/fs_sms_shadow_pd.bin b/examples/runtime/shaders/dx11/fs_sms_shadow_pd.bin index ba7432d96195c5d7133d4d51aed4a9091b5292d3..0f69b9b37645c5297b3c73c9b10e498560e553e2 100644 GIT binary patch delta 148 zcmZ3(e3#kIE!cylU`o*sMh2nM_>|Owl8oTw#GF+Bw6x;X5+Mc#21bT0j4lyQ&S5z| zFL%!PlPY(}^KF2=!d*t7+?I)|izUAR84f^f3&fEO3@mPa3P2W6^Ff3Z5__@s^YdxM>B|GY5_&cRKRKgkL<9^PHQ0N@=(Yz}X-#s}anZ<`dC zqTpbMce$QW1V<`#D00o^goh%1^0C(}JI0D^iip(L>$g^0RcyDP9(4QN7lZQU2Up6C zt>#v_$r_#?lsCGsdhHICT4l9zqgJg}uGUtsU&DAjz7OOSN)e#%NT!7!N5|ABVt1^4 z?c2%8+REhTZSjlUox=lPX|ErP-81$&Cf@R_r>rN8T}p7~+sIXq1P*T>-_&Kp_tebg?3NHCAh3=$6M|JE)zpvbuY zaUN~Ij7Yr2_!#EV3bCLcy^0{CB3lKe| zZjUt$(b zOrHMllwdjoCC|w4*u9v#xR%)-L?tu3#fJAbhtcU9MN8uI3kJ&>O5G00*py<1J!h*DY<4T%DJ<03=|6FFhm0}NDL^=0OB)DWMBvZQU*ZG1jHb57a#@!Oj8+F0}TYKVF6-hpo)ox zx=v<##(I`!1_pYDX2upK469eK4rE|pWn|!Az`)Sp4aDw1>S Nkx{C)!DIo(dH~&>4#@xj diff --git a/examples/runtime/shaders/glsl/fs_sms_shadow_pd.bin b/examples/runtime/shaders/glsl/fs_sms_shadow_pd.bin index 6148b4309459f242f7cfda2d011693d17deab1a2..008453b8a56822e817d48cdf462a761d06e0bc5a 100644 GIT binary patch delta 149 zcmZ3)^p{D+E!cylU`o*sMh2nM_>|Owl8oTw#GF+Bw6x;X5++6l21bU^iQF>srFofY z`9--3WvR&~3YaPV8Dit1Hpaw#Y%Xk*c!SE;F>1vX8?P|wWV+}y}0ReR#%dH|rP BF@695 delta 82 zcmey%w1`R7E!cylU`o*s1_oh928Oc4qRPy?bcM3iWD|w5_=5c6%#zIfyovF#iUxY7 gnp_GB3fc-FmVy>ojfSC~nYp>Skx{C)!Nh;{01mJiHvj+t diff --git a/examples/runtime/shaders/metal/fs_sms_shadow_pd.bin b/examples/runtime/shaders/metal/fs_sms_shadow_pd.bin index ccec78ba0020bea93aa126c6fa4c7d718cf6ea6c..4d4b4469aceccf011e2dd5db6fcc0483196a7522 100644 GIT binary patch delta 118 zcmaFQvWJ!1E!cylU`o*s28Oj0xfjbQD5T}&CzhBfl*Xr|7L;TJCnx5l`lqE8r1A!W@F?v&@