From 1f58f4b874a12caff1c185b511fa2f05e42fa813 Mon Sep 17 00:00:00 2001 From: Dario Manesku Date: Fri, 14 Feb 2014 08:14:49 +0100 Subject: [PATCH] Fixed halfTexel problem on dx9. --- .../fs_shadowvolume_color_lightning.sc | 5 ++-- .../fs_shadowvolume_texture_lightning.sc | 5 ++-- examples/14-shadowvolumes/shadowvolumes.cpp | 25 +++++++++--------- .../vs_shadowvolume_color_lightning.sc | 2 +- .../vs_shadowvolume_texture_lightning.sc | 2 +- .../dx11/fs_shadowvolume_color_lightning.bin | Bin 3638 -> 3696 bytes .../fs_shadowvolume_texture_lightning.bin | Bin 3896 -> 3954 bytes .../dx11/vs_shadowvolume_color_lightning.bin | Bin 1812 -> 1808 bytes .../vs_shadowvolume_texture_lightning.bin | Bin 1852 -> 1848 bytes .../dx9/fs_shadowvolume_color_lightning.bin | Bin 1865 -> 1935 bytes .../dx9/fs_shadowvolume_texture_lightning.bin | Bin 2027 -> 2097 bytes .../dx9/vs_shadowvolume_color_lightning.bin | Bin 651 -> 651 bytes .../dx9/vs_shadowvolume_texture_lightning.bin | Bin 687 -> 687 bytes .../glsl/fs_shadowvolume_color_lightning.bin | Bin 1838 -> 1899 bytes .../fs_shadowvolume_texture_lightning.bin | Bin 2052 -> 2113 bytes .../glsl/vs_shadowvolume_color_lightning.bin | Bin 675 -> 672 bytes .../vs_shadowvolume_texture_lightning.bin | Bin 758 -> 755 bytes 17 files changed, 20 insertions(+), 19 deletions(-) diff --git a/examples/14-shadowvolumes/fs_shadowvolume_color_lightning.sc b/examples/14-shadowvolumes/fs_shadowvolume_color_lightning.sc index f399bafc..ea2e6490 100644 --- a/examples/14-shadowvolumes/fs_shadowvolume_color_lightning.sc +++ b/examples/14-shadowvolumes/fs_shadowvolume_color_lightning.sc @@ -19,7 +19,7 @@ SAMPLER2D(u_texStencil, 7); #define u_ambientPass u_params.x #define u_lightningPass u_params.y -#define u_alpha u_params.z +#define u_texelHalf u_params.z #define u_specular u_specular_shininess.xyz #define u_shininess u_specular_shininess.w @@ -68,6 +68,7 @@ void main() vec3 lightColor = calcLight(v_view, normal, viewDir) * u_lightningPass; vec2 ndc = ((v_pos.xy / v_pos.w) + 1.0) / 2.0; + ndc += u_viewTexel.xy * u_texelHalf; vec4 texcolor = texture2D(u_texStencil, ndc); float s = (texcolor.x - texcolor.y) + 2.0 * (texcolor.z - texcolor.w); s *= u_useStencilTex; @@ -84,5 +85,5 @@ void main() vec3 final = mix(ambient, ambient + diffuse, float((abs(s) < 0.0001))); gl_FragColor.xyz = mix(u_fogColor, final, fogFactor); - gl_FragColor.w = u_alpha; + gl_FragColor.w = 1.0; } diff --git a/examples/14-shadowvolumes/fs_shadowvolume_texture_lightning.sc b/examples/14-shadowvolumes/fs_shadowvolume_texture_lightning.sc index e70dfb56..49f34ac1 100644 --- a/examples/14-shadowvolumes/fs_shadowvolume_texture_lightning.sc +++ b/examples/14-shadowvolumes/fs_shadowvolume_texture_lightning.sc @@ -20,7 +20,7 @@ SAMPLER2D(u_texStencil, 7); #define u_ambientPass u_params.x #define u_lightningPass u_params.y -#define u_alpha u_params.z +#define u_texelHalf u_params.z #define u_specular u_specular_shininess.xyz #define u_shininess u_specular_shininess.w @@ -69,6 +69,7 @@ void main() vec3 lightColor = calcLight(v_view, normal, viewDir) * u_lightningPass; vec2 ndc = ((v_pos.xy / v_pos.w) + 1.0) / 2.0; + ndc += u_viewTexel.xy * u_texelHalf; vec4 texcolor = texture2D(u_texStencil, ndc); float s = (texcolor.x - texcolor.y) + 2.0 * (texcolor.z - texcolor.w); s *= u_useStencilTex; @@ -85,6 +86,6 @@ void main() vec3 final = mix(ambient, ambient + diffuse, float((abs(s) < 0.0001))); gl_FragColor.xyz = mix(u_fogColor, final, fogFactor); - gl_FragColor.w = u_alpha; + gl_FragColor.w = 1.0; } diff --git a/examples/14-shadowvolumes/shadowvolumes.cpp b/examples/14-shadowvolumes/shadowvolumes.cpp index e16472f9..2a9fe003 100644 --- a/examples/14-shadowvolumes/shadowvolumes.cpp +++ b/examples/14-shadowvolumes/shadowvolumes.cpp @@ -99,6 +99,7 @@ static const uint16_t s_planeIndices[s_numPlaneIndices] = static const char* s_shaderPath = NULL; static bool s_flipV = false; +static float s_texelHalf = 0.0f; static uint32_t s_viewMask = 0; @@ -266,8 +267,7 @@ struct Uniforms { m_params.m_ambientPass = 1.0f; m_params.m_lightningPass = 1.0f; - m_params.m_lightCount = 4.0f; - m_params.m_alpha = 1.0f; + m_params.m_texelHalf = 0.0f; m_ambient[0] = 0.05f; m_ambient[1] = 0.05f; @@ -374,16 +374,16 @@ struct Uniforms { float m_ambientPass; float m_lightningPass; - float m_alpha; - float m_lightCount; + float m_texelHalf; + float m_unused00; }; struct SvParams { float m_useStencilTex; float m_dfail; - float m_unused0; - float m_unused1; + float m_unused10; + float m_unused11; }; Params m_params; @@ -402,8 +402,8 @@ struct Uniforms /** * u_params.x - u_ambientPass * u_params.y - u_lightningPass - * u_params.z - u_alpha - * u_params.w - u_lightCount + * u_params.z - u_texelHalf + * u_params.w - unused * u_svparams.x - u_useStencilTex * u_svparams.y - u_dfail @@ -1944,23 +1944,22 @@ int _main_(int /*_argc*/, char** /*_argv*/) default: case bgfx::RendererType::Direct3D9: s_shaderPath = "shaders/dx9/"; - s_flipV = true; + s_texelHalf = 0.5f; break; case bgfx::RendererType::Direct3D11: s_shaderPath = "shaders/dx11/"; - s_flipV = true; break; case bgfx::RendererType::OpenGL: s_shaderPath = "shaders/glsl/"; - s_flipV = false; + s_flipV = true; break; case bgfx::RendererType::OpenGLES2: case bgfx::RendererType::OpenGLES3: s_shaderPath = "shaders/gles/"; - s_flipV = false; + s_flipV = true; break; } @@ -2331,7 +2330,7 @@ int _main_(int /*_argc*/, char** /*_argv*/) //update settings s_uniforms.m_params.m_ambientPass = 1.0f; s_uniforms.m_params.m_lightningPass = 1.0f; - s_uniforms.m_params.m_lightCount = settings_numLights; + s_uniforms.m_params.m_texelHalf = s_texelHalf; s_uniforms.m_svparams.m_useStencilTex = float(settings_useStencilTexture); s_uniforms.submitPerFrameUniforms(); diff --git a/examples/14-shadowvolumes/vs_shadowvolume_color_lightning.sc b/examples/14-shadowvolumes/vs_shadowvolume_color_lightning.sc index fd7ec84b..98bd9acb 100644 --- a/examples/14-shadowvolumes/vs_shadowvolume_color_lightning.sc +++ b/examples/14-shadowvolumes/vs_shadowvolume_color_lightning.sc @@ -19,5 +19,5 @@ void main() v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz; v_pos = gl_Position; - v_pos.y *= -u_flipV; + v_pos.y *= u_flipV; } diff --git a/examples/14-shadowvolumes/vs_shadowvolume_texture_lightning.sc b/examples/14-shadowvolumes/vs_shadowvolume_texture_lightning.sc index b557a312..e18232b1 100644 --- a/examples/14-shadowvolumes/vs_shadowvolume_texture_lightning.sc +++ b/examples/14-shadowvolumes/vs_shadowvolume_texture_lightning.sc @@ -21,5 +21,5 @@ void main() v_texcoord0 = a_texcoord0; v_pos = gl_Position; - v_pos.y *= -u_flipV; + v_pos.y *= u_flipV; } diff --git a/examples/runtime/shaders/dx11/fs_shadowvolume_color_lightning.bin b/examples/runtime/shaders/dx11/fs_shadowvolume_color_lightning.bin index aa444361f16d7441e58e8ed97cd2061b4559245b..46c6c6ff43b0965c52c49b3a0607e73818efa471 100644 GIT binary patch delta 209 zcmdlc^Fd~UxEMEs0~dE`d|75{c}QwSYK|y_00Se#MClDC6L?)BoSYM8G8^A@*u`S{ z<)clF=$|k~1_p)+ybKJiK-vU^Sr`}&0PzUf|3DfTij)8$OIK(le1ju%n{D-#$037%u^8f$< diff --git a/examples/runtime/shaders/dx11/fs_shadowvolume_texture_lightning.bin b/examples/runtime/shaders/dx11/fs_shadowvolume_texture_lightning.bin index 890f77e2e5fa0ee017037c9be61dce905ee60b09..84a4561846cafdfbe9a9add49a9709f7cae332c1 100644 GIT binary patch delta 199 zcmdlX_epMoxEL3M0~dE`d|75{c}QwSYK|y_00Se#MCnB)3;0|joSaWRKfKg1aKYRA z6HL2xE?!AvWME)ez{kMA3ZzYdcm@jtgAI^V0K_VM8$U)dGBR!UVS3KYxrT#*!2zg3 zd$SGOBUV+;LqL<6fPA(V1t7@)w1t6TS(gHc$uJv;jTjhsCd>1vus-7gD%|YAlf)#) e+N2-=R>0^0q8jY&fck<%979TgJlDxb_(}kDwkr4l delta 144 zcmew)w?l4%I149(1J^{|MJ5$|E)h=7Oa959I(C&kNzYSTj3+aqmXU#hp@NTrffY!b z0PzeK1_m1-rvQlm@NQ;ijACSD*c`|7oSCzQgMq;Ts6=tIAKN2VMy|=BJSv+TdE%Lr k*qRgsfD#N0S`7+ddNz=>V_;wm4si@A0kT~t|KlqG0HmlN2><{9 diff --git a/examples/runtime/shaders/dx11/vs_shadowvolume_color_lightning.bin b/examples/runtime/shaders/dx11/vs_shadowvolume_color_lightning.bin index 0741b8eccb4b056c4375bd0c9563221d2749a682..92ded11053952cb54338f9db3adb19bb587674b8 100644 GIT binary patch delta 103 zcmbQjH-T?Lpz$6ymk1~4xlLj^*94yle6tS7P5Y4dfsuiMVGkPv11pd=0pb}<3=A5~ z3=CU<*kNN!J2PhsP{e_OkzwIx5tdzyA{l|HaDa`0ffY!b0Pzea1_ljg z28Jy_?6R??otd)(DB{4t$gpU$2+J-;2~H&i0S2HDgA{`RkOa~V3Js1744WUZ>M;TU DqKX!l diff --git a/examples/runtime/shaders/dx11/vs_shadowvolume_texture_lightning.bin b/examples/runtime/shaders/dx11/vs_shadowvolume_texture_lightning.bin index f75a47768f3c6ffcab1753a2520fac4c7cccf123..a891bf8b29d1f23fe1d10dde708c14fac8b84406 100644 GIT binary patch delta 103 zcmdnPw}Wp&pz#wnmk1~4MN_V)n=wgL{1earHjUAQm63sg;Rzc911pd=0pb}<3=BNX z3=A89IAdc=Gc)G~pojwlBg2}_0xXvpML3ic1Q>uq3{ngNKoUqdC~W@4>cj{DW+pz#Yfmk1|k1CfVIvQDT^=GkGD$bNFd0Y(M}h8JuM46H!f1c+xaF);8j zGcarb;+%~w&CHxzfFceIj0|fx3$R>bl;BiS5MTfbF-S2807)R-pwQsRz_9rns}myt D^cWZA diff --git a/examples/runtime/shaders/dx9/fs_shadowvolume_color_lightning.bin b/examples/runtime/shaders/dx9/fs_shadowvolume_color_lightning.bin index e7f2b91282511a35a2bd149569bf2f083d3582d4..33e690f11816fbb8f8680ebca5fe865cfeebd39d 100644 GIT binary patch delta 895 zcmY+CPiPZS5XR^2=503Fbhj!S{~$(?XrTy#;7u@!V)Y`m5pPRsH!+YVl60#g*e8Mq zJ(%*29$X=y1ib4(s0R%@r*6UF(EHWE0kAixq;WKBmQan`vn2mx~ zvvGHAv9Y|+Zin4PpUnWx0&*eGqM>Y^0gm2x{d=w!L>%@~Ls2x$?7dka_Z(ah(-p*?f)n7jqu`m-)8rQZ+uV zS`ibBsv=KGd|S6L5GTSVie33BQ!3ju))_{w&KT53wi?3??yP_Tk(Z1gU^CL^rF|SZ zu1{9EvB=5G{49JtJ^FHr8@4fGAUS_`r<;%BL#nQ)P&wQk! zu(rA0s<*fD!hwJrh4(ufoo-He6jAm;tI>#h^}KK?wxh7oY378#U(TOR6F3ru8?ENU zt+nR*)ponyUCW6%!d?_Us dy_~T2cTeo4i1|_2+n!LHfD?t=t@_Tq04%(4U?$1G zWEYoimn$a$d?C&(O)rk|1o%wsH*F2@taOeSdXCfE08dQXF*~OjPmR3;;gW{_jBr^q zb~8PET{E^aW%o3*W>`}*wl~#1){GraSP^(ikqMsW6kc(Lp0`@a?tu^Lhxn#G8O!q- zWMe?CumV`E(6Vw9umhDguZgs}W4@;Km$@J^s%X6{Wl)Vzb8!eMP?aep@m*cipg55k zAkL_tR^g(Hq0R^dI%A+u*=kJv>E}x7M5l+bz#nPrip+*`PF=AJM=eqwrk>idFNi?B zx6hY^qymSskPg+EQDdn7+QsZZPN+$h1GVUsDg$YZyBWloJN!A}@sxd@j{YpP|K7*g z57!v6Avs85HE_;^EFZ{#2H|TMweiS6!uxpCLdVa8gDYZ#iEhb8Cu8v5$MDUhhEIB5 aExHA=d&6DGQI2}hh@MBr2XT_n)%^!tr6ffe*KR}^J@4iFDYeA&o^E;c=bjjP@`OM7De24rhd>HHAc~B8QSFUbm zC>{E>m4#-|S|1lK3AUG-^?KL|#zhLY9s2clqbM@CkA?nnv+-p8Ub|DREj7bVQFupi zwXrbUY6WZ6qR0ZLLVvZkR$D=o4f9y&cUFVNaJjbTzv+72G*|{~<1okpa6*5h89X~7 zh%E93#$50`SS|_+?p2q}B>9`XqM5nd)2E2&0FlhHIM}8aMEhV_dS#{Sg30t-88Ie~X?FROf&c(Af zqT*-}>FI2jw*T7(ZL6kpzK{&x@+64Nt1V~ZVS+o4){`a}a|a{DoVl+a_k%wg?z=r! z#0t2INhYfFrG=`am>B*fGHF*T$35p;NbAcyQaF{<@S09TiD*z(+nWX0gF&&(KH7+J o?&IVfX0gmr{C4n03il++s7<#7`8)1p5kAx)gHkEoVv-QiKQ&IYivR!s delta 868 zcmYk4O=uHQ5Xa|jvS0b^p{W$4QM8JbB7z8F(b}RYC}=d|MV7QpVxUP&lC8(Qg134| zc}E4eCn0$8CgQ<^M+F1kJi3D7$(tT@{m+Z(y6nC;^P71y^MCA%iSPN|ILD#p76c(M*V*G#zv=9S!?*6f=K;` zOZAnjtyZ;NDu^_&<9nNxcBP4|B-}~g>ugq6{q;)Q+wG-$4p<6oYn)^PSiZN_s6Ln$ zL`hn(DG^0~qKCA6`{L3;BKic*ERBtQ+9vu4_7kQ-JU-6xf@c!DK`bF=Gn%m!>d{e- z;5n@!3!!~>Ni$Xvvpbrxl$d#%v6Pr~HDfg~>%mFD7Z~Xg2j~dV6AgL78G5cE(QE7m z!byB@)lhs^Z;SDVwFE6}*msvdd>g)NNL}pISCssvD?IxaLJ(Zk8 z{=MY0*$kC~L%Oe!g38jND7dRj8}K8UAqq0;gjqamQ>Y_?aynvAAJKAvDe&47U2!@L z1pShxuE;EuX|-(@MN;jV%Ob13n02hzt@*=3;#d%8lC*Go>>CuS$JX)uV80fK%&MU^ zyEKqckDIb(0*tw(FT~-w`aBPQ64)R5^iKg-9kCEIM}fL#AM-eUAhQ^Pg^wCL7&&4) z7`4#;P7eO)Qdm-?Te7tA7;L)~?u~1>XyK}%U4+yh_FMrm^dN&A2cic-6ydV|0g#Z8m delta 13 UcmZ3_x}J4ID-+|w$!$!U03v?`h5!Hn diff --git a/examples/runtime/shaders/glsl/fs_shadowvolume_color_lightning.bin b/examples/runtime/shaders/glsl/fs_shadowvolume_color_lightning.bin index 652fab5078220bf8a654493c31b6392ffdd2aff5..0e1c86670beab55d83aab9dc29c596ca37b7ed60 100644 GIT binary patch delta 117 zcmZ3-_nL1)fIwMlvWY@zd|75{c}QwSYR*PCMP@H91t8EUi!aD8)~l#g&{u#k%QZm~ w+6snx2AV)YBM_ynpn;?tq*@DTTtQ+{Vs5csmFDJl=IP9wKn>PhwOm{b08kbpIsgCw delta 65 zcmaFOw~lW@z{V_bW`(l&g8X8=ib@52D6?EsL0iF4&p;C>Vx(uV`84x%W`WZ9g2bZ4 O++w{dYpz-@E(QR*k`uT9 diff --git a/examples/runtime/shaders/glsl/fs_shadowvolume_texture_lightning.bin b/examples/runtime/shaders/glsl/fs_shadowvolume_texture_lightning.bin index f7de9ed687ebdff9d06ab70eca064d438505685f..9affffb60b9e7b302d8a1d1d3d2a09e53c273cc1 100644 GIT binary patch delta 113 zcmZn>I4Ce7Yhpb+XIW-yc}QwSYR<+4O=d4H1t8EUi!aD8)~l#g&{u#k%QZm~+6snx v2AV)YBM_ynpivqR*9}swrBE7QkXV$MTdY^5xp^hCHw!0FgEdzz7Z(Ens0tvb delta 65 zcmX>o&>}D)Yh#N%vqD*XL4L7bMWup1lv%E+psir2XP^lbG14>G{Fd39MW8gkAh9Sh Ow^*;rnyZ$Jiva+#iW7SP diff --git a/examples/runtime/shaders/glsl/vs_shadowvolume_color_lightning.bin b/examples/runtime/shaders/glsl/vs_shadowvolume_color_lightning.bin index 0c64a04ea62228bb79ce09a3ff6ecb7760b55d3d..540a62b84d47165b75e3ab3387d7cc1c4f948e84 100644 GIT binary patch delta 22 dcmZ3?x`1`VBqqMn__UnNf-p^Mu39cG1^`x^26O-b delta 25 gcmZ3$x|nstBql*!jneqEoXmnSO-*aAS}raI0BA-A^#A|> diff --git a/examples/runtime/shaders/glsl/vs_shadowvolume_texture_lightning.bin b/examples/runtime/shaders/glsl/vs_shadowvolume_texture_lightning.bin index 790a33fe3db93d9e827e32ef60011ebe82ca3aad..faf1e1962e135625000642c9c0f2edd51851d60a 100644 GIT binary patch delta 22 dcmeyy`k8gZQzpLB__UnNf-p^Mu39cG1^{Wj2W