From 4e600f59437e7361b753a2902a518068baa4b85f Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Fri, 28 Aug 2020 21:15:13 +0200 Subject: [PATCH] Fixed coordinate transformation for skybox and reflection objects Matched HLSL and GLSL shaders Fixes #757 --- .../glsl/texturecubemaparray/reflect.frag | 2 +- .../glsl/texturecubemaparray/reflect.frag.spv | Bin 3344 -> 3348 bytes .../glsl/texturecubemaparray/reflect.vert.spv | Bin 2508 -> 2508 bytes .../glsl/texturecubemaparray/skybox.frag.spv | Bin 1312 -> 1312 bytes .../glsl/texturecubemaparray/skybox.vert | 1 + .../glsl/texturecubemaparray/skybox.vert.spv | Bin 1688 -> 1688 bytes .../hlsl/texturecubemaparray/reflect.frag | 4 ++-- .../hlsl/texturecubemaparray/reflect.frag.spv | Bin 2748 -> 2788 bytes .../hlsl/texturecubemaparray/skybox.vert | 2 +- .../hlsl/texturecubemaparray/skybox.vert.spv | Bin 1324 -> 1376 bytes .../texturecubemaparray.cpp | 1 - 11 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/shaders/glsl/texturecubemaparray/reflect.frag b/data/shaders/glsl/texturecubemaparray/reflect.frag index efcacb16..8982b77d 100644 --- a/data/shaders/glsl/texturecubemaparray/reflect.frag +++ b/data/shaders/glsl/texturecubemaparray/reflect.frag @@ -24,7 +24,7 @@ void main() vec3 cR = reflect (cI, normalize(inNormal)); cR = vec3(ubo.invModel * vec4(cR, 0.0)); - cR.y *= -1.0; + cR.yz *= -1.0; vec4 color = textureLod(samplerCubeMapArray, vec4(cR, ubo.cubeMapIndex), ubo.lodBias); diff --git a/data/shaders/glsl/texturecubemaparray/reflect.frag.spv b/data/shaders/glsl/texturecubemaparray/reflect.frag.spv index f4ed3bf5afd9e5082e90766fe6a882ee6ff4ca87..5c3fa1bee268db25556858ce8994f50dd51f1322 100644 GIT binary patch literal 3348 zcmZ9M*>hA?5QmRsV~HRlAfOP48v+rPAc`zWGzppz7Kx~+Ofr*jF*6fq5*A;K558Ju zmH&^H-F?G=k{zH9!TlAv@>l_Kc!;rP1`_HlAnR^O8vP$ zHFJArq`OuhIX8M%&)um1KZ-Y!e*|lb)(&dYul~umU3TSBWqo6cbc^o;M{%?erJ4+&ij+HYqisU*jQZ4 z+H}{Cm$>_Ew(AW8!`Gg&)}z@H-t=|1EA9GtR_lTdkDn<-t?|M?Ui;Xw+*CGc(>MEU1@YCiqNr6r}i|Do5bd<+#_30Gr8QC&oFDvWXliM z<{OKJeHPn%X*VWo&1a3rxjB!&3C4)>9`vg<7qUicE!Xd%*R!Ri^=<>bFV)eztBu9= zm6~mW^ylZ*USFH+)Rrg8_R|#m@hpzUT+)t%)udd#~o*NZtLreQyc(wA5hwO6uIQl$OuxUN@bgT?{(+`A2YWTvy?U-EAXn(e z3pLk0+p1k%yFKggTX0s^RrlP~BfoDXX1fnm{5anFD<44WhYvvqiFZHh+K14$!^I@^ zop5WbUo3UcPb_rjuWr7V;O27%FZ10G7gOKQ_W*nd(*Gz~osB+0#uh%k#1}p5V=Z;( z=RQuAxek}Qy&frLb7?o%F~}AA$z0p`(_Y_3*2jFtpM|?m`#r?p<2|@`XXCPGSMVcP z-bdHZ_;VUrV)m;(D!__^!f>y|_1**uNmYDSf?H zJD|8n>bontv-dw&wNGx*{hw9s{=cfa|EsF*KdY+y&#LP6Qolrh;)9TPd$63{^T^Kj z(;Q3bGP`mQ;t{h4SuFIu$i9cj@gj2M&^AaVYwauXDY!ZGGru#@Hpb+<&#yqKo&G#GqX*&aHKM6(r z2yzj>J)iqK=wkZ1yrt-|%_J_ZzuBKsJ|WkKNN%$h_L! zx9?6{?9)40y~ES!_NI?EVk<=pnZud= z%DlCI1Nm>&&wT!C#G;RHk?kY&?~v{L58^$W?;(A}?N#hPWF7Cn_G6HD+j@)80(2j; z-aWWjon6#hM%G6>>ODY?dfKfQwuhzdFkHV3ie7#|cJKPwOC2s2wOh!} zBlI@1{i-|bRj4}aA4^Q!wRP4VFmvelOF54&vURjYoi${837>Uj{lw#~Jwg_D1@;(O f%({U+DKXDH{*6zOjn`j$4RZfYxVHbuZ~^)sCBn!O literal 3344 zcmZ9OTXPge6vx|ac7qTDh=7Q~hIm1NhzN)xkc+Yj<_1Ur6=imJ5+?4>tb5_255@;y zt+I;mBW3xae4&c}ucuF#N~g}AbN=Vrr@N<88k!h!?iIH~f4{kW?R7&!oP(bd-{mS^ zuPxkMnC$hNlV{JJ#&gV-VBWUd?R3MEp>~v{;JZY7MBj*(MSy!0gO7?zDyf2V|EgG7 zXfd`d+pDrQ=5rgll5{2OiDMhXb_2QWYb5DX)@?^E!QOsQ{MO8}IuHlWy}adp)1CL^r{Y)||4N5BGq0iz7!d4xP9u zk;Q>+kK@dWap=TtiYyN7WnA7vNf>_5MCQktg8e6|>8{Z$vFw#|JtktAKAx*y=WL61 zbnNtuKW~9qQ5T(aL%008np?BoClq{K-uNRQkW>+`iViBC{h(v7O5Y(42BGg1r#AY< zpmTm;rZazZ^1UHWK4$Qye)o%mq3_r40r9E`|0BxEZ16E6Huo7;eBLuY)Iw)|?Bhhp z^;Xd7^>C2Mg`HeSMJ&@l^xEb>^zxD9s@HQn`Uw%ek?*9q%?JIHptGMt`nr57ZnKl< z;}R z!|Yy@%xu5*m~)r4EA{|xF}o#$nZ8#t@5OSwF4=Nm8&xH0?F)EKoE-R(pP68r*5tVF zZ;N;nyaQ@*_umnLTTQ+X#9dbmccm%GI~Fj`ZAD#it`nlF2!HInufLTS z+q)ua<6}AA3%J-8_I|*MwLS<~UMs(w$AuA(KX%(cIQ!>)o)WP)-YxrOf0H8cKf``M z4j6CW;!aDpIP#+7M-JZSXCmIF&G3R`{E6pXUKBBR-YY(Qv%VC8XQ7Wv0kc_LmQEg) zVOJ!B6=yLOu;SdOg%OYcl!)B)GAsU-h+bwyHUsV?_?>WWS0%G2@{kuh`{qqyvwhA< zF5b_1>GXy_He$Gw;1 zUGp6g|5gNM_FIza&EC+eWO9Pxi=DiD2e1*xz5Pza9G3MJBJcMB180$gnQ@=6{~)?6 z!jF7>N5HI)A0<=M^q(Zt_tS76?@Pu9oL;%Jk%&6n?fasmqQ64DrsReQAL`u`2ebTZ zlG&5#>ynwB)q5ZrA8@OeNVa;|sb{vIgN<(rej6g|r6rlY<3lg8IGEMWBr^}wJCf-a zomu}PD$cqaFmM(<6=&U(P7eJ32=nMmrVci%GmuO#=JQZ8e&F`j9!Umg8TME*7jd`6g)nMs+Qfq{{MYa{1jP5>me1Bd_s delta 18 ZcmX>jd`6g)nMs+Qfq{{MVmU1BL(q diff --git a/data/shaders/glsl/texturecubemaparray/skybox.frag.spv b/data/shaders/glsl/texturecubemaparray/skybox.frag.spv index 6d4b7d68a4e9f3cf3903e00858c7e28c5aa477b2..35ec681bc02503d7951428b94a329d63baf78007 100644 GIT binary patch delta 18 ZcmZ3$wSbG0nMs+Qfq{{MYa^#PD*zl}0&V~R delta 18 ZcmZ3$wSbG0nMs+Qfq{{MV#nMs+Qfq{{MYa^#QD=Q-d0|V1!S5|9IAcKJ!h*>swvhp(m0CngE1poj5 delta 43 ucmbQiJA;>#nMs+Qfq{{MV%tlKO+Ejs09N6 diff --git a/data/shaders/hlsl/texturecubemaparray/reflect.frag b/data/shaders/hlsl/texturecubemaparray/reflect.frag index 363c8a48..4fe024c9 100644 --- a/data/shaders/hlsl/texturecubemaparray/reflect.frag +++ b/data/shaders/hlsl/texturecubemaparray/reflect.frag @@ -25,11 +25,11 @@ struct VSOutput float4 main(VSOutput input) : SV_TARGET { - float3 cI = normalize (input.ViewVec); + float3 cI = normalize (input.Pos); float3 cR = reflect (cI, normalize(input.Normal)); cR = mul(ubo.invModel, float4(cR, 0.0)).xyz; - cR *= float3(-1.0, 1.0, -1.0); + cR *= float3(1.0, -1.0, -1.0); float4 color = textureCubeMapArray.SampleLevel(samplerCubeMapArray, float4(cR, ubo.cubeMapIndex), input.LodBias); diff --git a/data/shaders/hlsl/texturecubemaparray/reflect.frag.spv b/data/shaders/hlsl/texturecubemaparray/reflect.frag.spv index 5aea02ba6ccafe528eff911c1d92ff4af275fc3a..11ae34e15f2d1bccbe0e4f1016f80f0fddaa2e01 100644 GIT binary patch delta 1076 zcmYk4$!-%t6h)uyc8tLR0yqXlkQf#WN*KZrh74vhVM@#p0<8D~KA~a37DZ})1R-`v zd%+d!Wqz=q3i zZA9!(HS&;w3-j&l{{NsnS1=-SqR+6V4VIs|JVPk9I1f_|C1i!EnkaAh5MFOhbd zCwCPlFhJepTTHQ^^8r`}HoBeulq-@q&OAPW9s@Y_LtsHQSD*Ryc>G`Rjg(Acz$0K# zeh0YK2`r-KJIKHM3AX&Gdfy$CPm`LX{V&ge<<9_hm-rVF-aRI0KVO7!osta0-rKSg=Kr%ta7lhs06X za1A8h`>B%L(x?UWc1f)B4luxin`Lj^@!jC{d7RdSpSj};+yllO2R7V7-Us`_ z-d{^!rqqL8L@t9IbdLJPhfkG?9NJ_uC)!THWDO7&kf14c}rN*oK@we?h+E2D%xA$2hZo zjio+AH$L;Z=;y$=^FV(Ge2I5|;mCC`4=<+7XrMyL#_awKCE@y+uy$jCQ$#1)Z?tSC+ Tcfs;(ndFnYuu}e#VhQ{M@IXL$ diff --git a/data/shaders/hlsl/texturecubemaparray/skybox.vert b/data/shaders/hlsl/texturecubemaparray/skybox.vert index cb818f23..37f07a08 100644 --- a/data/shaders/hlsl/texturecubemaparray/skybox.vert +++ b/data/shaders/hlsl/texturecubemaparray/skybox.vert @@ -21,7 +21,7 @@ VSOutput main([[vk::location(0)]] float3 Pos : POSITION0) { VSOutput output = (VSOutput)0; output.UVW = Pos; - output.UVW.y *= -1.0; + output.UVW.yz *= -1.0; output.Pos = mul(ubo.projection, mul(ubo.model, float4(Pos.xyz, 1.0))); return output; } diff --git a/data/shaders/hlsl/texturecubemaparray/skybox.vert.spv b/data/shaders/hlsl/texturecubemaparray/skybox.vert.spv index cf46f6821b11d6be398ee0180e860ccc64fa049e..a086e9d619932fb2c8b24c7355f593f24a790573 100644 GIT binary patch delta 373 zcmXw#OAf(M6owBirAaZN^{zKNFd?x5tieLW$V?Zsr&TXO%QOMcJ-Ms}_b~o3gtD0Wktdw~@ z?(!qpQ&;c%pj>(SJn&&>WlJ~*z+g=EhrTUq5DY=4OH3aZKR%C8QaI95gO5Sw^*L?A z-Hqq8X|8G90}ZR3GthhG%df+oy7J~AU;Ui6Fk5AYM%%K9c0tVU+DW^9`73Mq0r7tm ArT_o{ delta 321 zcmXw!OAdlS42G+K4-(Xk!8a)C8Qf^%4b&@m5LU*m2`6xA;>H_!5fi^3n3?=(`?Z~R zzTrEJyk^!mYnWNjwx8(k1*!QK7ccLckDz;^5IaUqbhf}c*h$UQd8^s9<`MQ{t+H>1 zFRp&o9^o-|ju_0;N}4mkUm)eEs|u6i>Bo5rN{}1B#MhHLj;-+BnkOFb5@$%YT37i# hda$l?YovUN9NXZFYmI|>Tr=3P415Cp=f_WW=npwQ5>5aB diff --git a/examples/texturecubemaparray/texturecubemaparray.cpp b/examples/texturecubemaparray/texturecubemaparray.cpp index 7c7c5bcc..6766cf0f 100644 --- a/examples/texturecubemaparray/texturecubemaparray.cpp +++ b/examples/texturecubemaparray/texturecubemaparray.cpp @@ -59,7 +59,6 @@ public: title = "Cube map textures"; camera.type = Camera::CameraType::lookat; camera.setPosition(glm::vec3(0.0f, 0.0f, -4.0f)); - camera.setRotation(glm::vec3(-7.25f, -120.0f, 0.0f)); camera.setRotationSpeed(0.25f); camera.setPerspective(60.0f, (float)width / (float)height, 0.1f, 256.0f); settings.overlay = true;