From f970dc4e4d100747bbdced9aa7dbdec7a04f5239 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Thu, 7 May 2020 18:37:05 +0200 Subject: [PATCH] Merge shaders --- Shaders/painter/{glsl => }/cursor.frag.glsl | 0 Shaders/painter/{glsl => }/cursor.vert.glsl | 8 ++ Shaders/painter/hlsl/cursor.frag.glsl | Bin 927 -> 0 bytes Shaders/painter/hlsl/cursor.vert.glsl | Bin 7408 -> 0 bytes Shaders/painter/hlsl/layer_copy.frag.glsl | Bin 726 -> 0 bytes Shaders/painter/hlsl/layer_merge.frag.glsl | Bin 10029 -> 0 bytes Shaders/painter/hlsl/layer_merge.vert.glsl | Bin 640 -> 0 bytes Shaders/painter/hlsl/layer_view.frag.glsl | Bin 1634 -> 0 bytes Shaders/painter/hlsl/layer_view.vert.glsl | Bin 1163 -> 0 bytes Shaders/painter/hlsl/mask_merge.frag.glsl | Bin 897 -> 0 bytes Shaders/painter/hlsl/src/build.bat | 8 -- Shaders/painter/hlsl/src/cursor.frag.hlsl | 7 -- Shaders/painter/hlsl/src/cursor.vert.hlsl | 60 ------------ Shaders/painter/hlsl/src/layer_copy.frag.hlsl | 5 - .../painter/hlsl/src/layer_merge.frag.hlsl | 90 ------------------ .../painter/hlsl/src/layer_merge.vert.hlsl | 10 -- Shaders/painter/hlsl/src/layer_view.frag.hlsl | 25 ----- Shaders/painter/hlsl/src/layer_view.vert.hlsl | 10 -- Shaders/painter/hlsl/src/mask_merge.frag.hlsl | 12 --- .../painter/{glsl => }/layer_copy.frag.glsl | 0 .../painter/{glsl => }/layer_merge.frag.glsl | 0 .../painter/{glsl => }/layer_merge.vert.glsl | 3 + .../painter/{glsl => }/layer_view.frag.glsl | 0 .../painter/{glsl => }/layer_view.vert.glsl | 0 .../painter/{glsl => }/mask_merge.frag.glsl | 0 khafile.js | 6 -- 26 files changed, 11 insertions(+), 233 deletions(-) rename Shaders/painter/{glsl => }/cursor.frag.glsl (100%) rename Shaders/painter/{glsl => }/cursor.vert.glsl (88%) delete mode 100644 Shaders/painter/hlsl/cursor.frag.glsl delete mode 100644 Shaders/painter/hlsl/cursor.vert.glsl delete mode 100644 Shaders/painter/hlsl/layer_copy.frag.glsl delete mode 100644 Shaders/painter/hlsl/layer_merge.frag.glsl delete mode 100644 Shaders/painter/hlsl/layer_merge.vert.glsl delete mode 100644 Shaders/painter/hlsl/layer_view.frag.glsl delete mode 100644 Shaders/painter/hlsl/layer_view.vert.glsl delete mode 100644 Shaders/painter/hlsl/mask_merge.frag.glsl delete mode 100644 Shaders/painter/hlsl/src/build.bat delete mode 100644 Shaders/painter/hlsl/src/cursor.frag.hlsl delete mode 100644 Shaders/painter/hlsl/src/cursor.vert.hlsl delete mode 100644 Shaders/painter/hlsl/src/layer_copy.frag.hlsl delete mode 100644 Shaders/painter/hlsl/src/layer_merge.frag.hlsl delete mode 100644 Shaders/painter/hlsl/src/layer_merge.vert.hlsl delete mode 100644 Shaders/painter/hlsl/src/layer_view.frag.hlsl delete mode 100644 Shaders/painter/hlsl/src/layer_view.vert.hlsl delete mode 100644 Shaders/painter/hlsl/src/mask_merge.frag.hlsl rename Shaders/painter/{glsl => }/layer_copy.frag.glsl (100%) rename Shaders/painter/{glsl => }/layer_merge.frag.glsl (100%) rename Shaders/painter/{glsl => }/layer_merge.vert.glsl (76%) rename Shaders/painter/{glsl => }/layer_view.frag.glsl (100%) rename Shaders/painter/{glsl => }/layer_view.vert.glsl (100%) rename Shaders/painter/{glsl => }/mask_merge.frag.glsl (100%) diff --git a/Shaders/painter/glsl/cursor.frag.glsl b/Shaders/painter/cursor.frag.glsl similarity index 100% rename from Shaders/painter/glsl/cursor.frag.glsl rename to Shaders/painter/cursor.frag.glsl diff --git a/Shaders/painter/glsl/cursor.vert.glsl b/Shaders/painter/cursor.vert.glsl similarity index 88% rename from Shaders/painter/glsl/cursor.vert.glsl rename to Shaders/painter/cursor.vert.glsl index 51fc5f27..ba4353a0 100644 --- a/Shaders/painter/glsl/cursor.vert.glsl +++ b/Shaders/painter/cursor.vert.glsl @@ -6,6 +6,9 @@ uniform vec2 texStep; uniform float radius; uniform vec3 cameraRight; uniform sampler2D gbufferD; +#ifdef HLSL +uniform sampler2D texa; // direct3d12 unit align +#endif in vec4 pos; in vec2 nor; in vec2 tex; @@ -18,7 +21,12 @@ out vec2 texCoord; // return p * (1.0 - c) + q; // } vec3 getPos(vec2 uv) { + #ifdef HLSL + float keep = textureLod(texa, vec2(0.0, 0.0), 0.0).r + pos.x + nor.x; // direct3d12 unit align + float depth = textureLod(gbufferD, vec2(uv.x, 1.0 - uv.y), 0.0).r; + #else float depth = textureLod(gbufferD, uv, 0.0).r; + #endif vec4 wpos = vec4(uv * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0); wpos = invVP * wpos; return wpos.xyz / wpos.w; diff --git a/Shaders/painter/hlsl/cursor.frag.glsl b/Shaders/painter/hlsl/cursor.frag.glsl deleted file mode 100644 index a07c2a6e50110b8b46139f7817f297a4e5752152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcma)4ze^)g5T4B@C@7ldAmuA8B8ZqfIph#QH(3?bNH&pZ6W6;{BZ(U}TUd!$*eHTv zVc|a@i>+9SrIm$+rG@toh#c1(@tfWEjwmS{@-aW&%r}#nCB5Q1JC&wgZ`2%*2oBM} zbj@9}YfU1}uWtLq(hKNXwmfAl-#zu5Xoh+B96P&8{XWp}($I+#(4)W+0yn@b@DL*^ zWOL>sZ2agNKq`#`lxVd$m<9^jOon4AKmciA0N}1H=K$Az6y{{P0MII&Ar9SwK!rV- zihL@*U*8h{)c=+IaRH(cvx8o>BTjFLJ}C%r|$VT*ci-)a9w1SoHR%Khl^j zu`juQ$eb~(#*;Bq=9~M1#|~uz<6Fha;we1-e&q?nd-6?{sJQamb*HyZvG$tJ+Hb$j BZFT?v diff --git a/Shaders/painter/hlsl/cursor.vert.glsl b/Shaders/painter/hlsl/cursor.vert.glsl deleted file mode 100644 index f73830c2889ad9f6f7119372747a70acf99e31bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7408 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 PIp@14#eelly_0G`?}}3Q diff --git a/Shaders/painter/hlsl/layer_merge.frag.glsl b/Shaders/painter/hlsl/layer_merge.frag.glsl deleted file mode 100644 index e0389d52d4f6119eae7354aa9112594a05367cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10029 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 B3-bT~ diff --git a/Shaders/painter/hlsl/layer_merge.vert.glsl b/Shaders/painter/hlsl/layer_merge.vert.glsl deleted file mode 100644 index 64937e0e4c669e40aa9b28db1bf122f73075b039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmb_Yu}Z^G6un7X=pdNU@gag$ikKqeptdz>tq@H}f^;jzR*k5yG#wnpZ*XyQ6!H;* zgSfbL5nTNNKR`V<%`2{g7tXuqo%_y7-qQv$CY0UYv7SGiWb5YDSe&=-#&6vh4f>T% zR6t(??tw8-#^4?B?MAbQ{qNf3P2uaCFlX-DrpbK{5I_l70A>KL{pe^YV|hFhC4Wh@ zoWK#mX}8xO3QJxLqH_>)b;YE;VE3Sm^N6J)AOKaljO0MVM%!{--=-u730v_gP??6&!Xv8Aqc?UUF{GYP26P_i%C<{j5k@2iA&VU`NzvE++hh zDE|r0nT!ge)vTGF*J~IMRe{HpVbNb0c%Q?ymt@xB_dM!Ps7Wl5K+xTn{ X*27z-_f!&R{-yX$|D%2YL99Q7 diff --git a/Shaders/painter/hlsl/layer_view.frag.glsl b/Shaders/painter/hlsl/layer_view.frag.glsl deleted file mode 100644 index 00707559785e0067afde214717b38e6b44d38330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1634 zcmcIk&ubG=5T5O(Kd8loLZK&phaMt`G)2@y6*b8=LNz6uNE9J%>)J$;Y}l+&FOok% zJ@uv+Z_46b@h0NglX&zX9zEnB9)$SKzV}L8TALm+@a>y7@69)}GqX!(EpT^gU8mJ) zx;_y$L`!Q;Z_{aZiHxnf({8&>Vo3mok*i+K`tL42|NisN`S-1dul{%+Um7@Bo+6sW zdKP#B!&hK#f@l}UQZ8?8V9)p70w%Bu(Bxpi#xzjMWio7A1O$)PWp(A=*rl*-yzm>nqSXHy1vAA?|H*;-KWYwNcE*zf_i5A|egxymfxm@=a?t(Ly*M{YFLeKo&$toVpNHW&I|{F_a`=^0yc2RAp27WME?@@Z;MugxSIWD1=QP0I3JcG|G{CiB QIRm3(nUoOQ-Zh<9h+oYAvGZrBtoH#X=>JPA)|0=PZ^WZ~BtH$OqUjcS$Jb-)MKfK}iMK-&9g6XY$tih~?p_|C@;1lUEY(@JHwC(po{pL`vha|{{d>lpHNaK^ku3hIpE9iK#G>${Km4WrpO-HYg6jPHCeEHvw7j-UNM#8pMT$Gs2W{GQl9?UKQ4g9l^( K#rVDd5Bm)w26$Tl diff --git a/Shaders/painter/hlsl/mask_merge.frag.glsl b/Shaders/painter/hlsl/mask_merge.frag.glsl deleted file mode 100644 index 044dac2199a7d5787c3a9284e6230d1b760d23a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcma)4O-lk{5T5meB!nagJiZ4H1`%#VL`9fiZD1Mh8qy&%+tNss)kE|}bnn)+U*M%< zhfW>)1$OAtPw*c0%I0x>52MTYA0eAsOlkfB* zFw(_jE|*V1(#icpGlnMmR>>$^hh`fhT}v1Fk(BZQ6HZ*k>Ueh=(ajUlRkAQa8o3ruZWJ1}1y?(VPi(nd#^dx`hEz9Jj9b+4f0Xaa#-8U%8;oUc O&`X`n4Xc-R!~6%WU27u% diff --git a/Shaders/painter/hlsl/src/build.bat b/Shaders/painter/hlsl/src/build.bat deleted file mode 100644 index 935b19e3..00000000 --- a/Shaders/painter/hlsl/src/build.bat +++ /dev/null @@ -1,8 +0,0 @@ -..\..\..\bin\hlslbin.exe cursor.vert.hlsl ..\cursor.vert.glsl vs_5_0 -i nor -i pos -i tex -..\..\..\bin\hlslbin.exe cursor.frag.hlsl ..\cursor.frag.glsl ps_5_0 -..\..\..\bin\hlslbin.exe layer_view.vert.hlsl ..\layer_view.vert.glsl vs_5_0 -i col -i pos -i tex -..\..\..\bin\hlslbin.exe layer_view.frag.hlsl ..\layer_view.frag.glsl ps_5_0 -..\..\..\bin\hlslbin.exe layer_copy.frag.hlsl ..\layer_copy.frag.glsl ps_5_0 -..\..\..\bin\hlslbin.exe layer_merge.vert.hlsl ..\layer_merge.vert.glsl vs_5_0 -i pos -..\..\..\bin\hlslbin.exe layer_merge.frag.hlsl ..\layer_merge.frag.glsl ps_5_0 -..\..\..\bin\hlslbin.exe mask_merge.frag.hlsl ..\mask_merge.frag.glsl ps_5_0 diff --git a/Shaders/painter/hlsl/src/cursor.frag.hlsl b/Shaders/painter/hlsl/src/cursor.frag.hlsl deleted file mode 100644 index f5c6ff1b..00000000 --- a/Shaders/painter/hlsl/src/cursor.frag.hlsl +++ /dev/null @@ -1,7 +0,0 @@ -uniform float3 tint; -Texture2D tex; -SamplerState _tex_sampler; -float4 main(float2 texCoord : TEXCOORD0) : SV_Target0 { - float4 col = tex.Sample(_tex_sampler, texCoord); - return float4((col.rgb / col.a) * tint, col.a); -} diff --git a/Shaders/painter/hlsl/src/cursor.vert.hlsl b/Shaders/painter/hlsl/src/cursor.vert.hlsl deleted file mode 100644 index 3165d51c..00000000 --- a/Shaders/painter/hlsl/src/cursor.vert.hlsl +++ /dev/null @@ -1,60 +0,0 @@ -uniform float4x4 VP; -uniform float4x4 invVP; -uniform float2 mouse; -uniform float2 texStep; -uniform float radius; -uniform float3 cameraRight; -Texture2D texa; // direct3d12 unit align -SamplerState _texa_sampler; // direct3d12 unit align -Texture2D gbufferD; -SamplerState _gbufferD_sampler; - -float3 getPos(float2 uv) { - float2 uvinv = float2(uv.x, 1.0 - uv.y); - float depth = gbufferD.SampleLevel(_gbufferD_sampler, uvinv, 0).r; - float4 wpos = float4(uv * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0); - wpos = mul(wpos, invVP); - return wpos.xyz / wpos.w; -} - -float3 getNormal(float3 p0, float2 uv) { - float3 p1 = getPos(uv + float2(texStep.x, 0)); - float3 p2 = getPos(uv + float2(0, texStep.y)); - return normalize(cross(p2 - p0, p1 - p0)); -} - -void createBasis(float3 normal, out float3 tangent, out float3 binormal) { - // Project vector onto plane - tangent = normalize(cameraRight - normal * dot(cameraRight, normal)); - binormal = cross(tangent, normal); -} - -struct SPIRV_Cross_Output { float2 texCoord : TEXCOORD0; float4 gl_Position : SV_Position; }; -SPIRV_Cross_Output main(float2 nor : TEXCOORD0, float4 pos : TEXCOORD1, float2 tex : TEXCOORD2, uint gl_VertexID : SV_VertexID) { - SPIRV_Cross_Output stage_output; - stage_output.texCoord = tex; - float3 wpos = getPos(mouse); - float2 uv1 = mouse + texStep * 4; - float2 uv2 = mouse - texStep * 4; - float3 wpos1 = getPos(uv1); - float3 wpos2 = getPos(uv2); - float keep = texa.SampleLevel(_texa_sampler, mouse, 0).r; // direct3d12 unit align - wpos.x += keep * 0.0000001; // direct3d12 unit align; - float3 n = normalize( - getNormal(wpos, mouse) + - getNormal(wpos1, uv1) + - getNormal(wpos2, uv2) - ); - - float3 n_tan; - float3 n_bin; - createBasis(n, n_tan, n_bin); - if (gl_VertexID == 0) wpos += normalize(-n_tan - n_bin) * 0.7 * radius; - else if (gl_VertexID == 1) wpos += normalize( n_tan - n_bin) * 0.7 * radius; - else if (gl_VertexID == 2) wpos += normalize( n_tan + n_bin) * 0.7 * radius; - else if (gl_VertexID == 3) wpos += normalize(-n_tan + n_bin) * 0.7 * radius; - - stage_output.gl_Position = mul(float4(wpos, 1.0), VP); - stage_output.gl_Position.z = (stage_output.gl_Position.z + stage_output.gl_Position.w) * 0.5; - return stage_output; -} diff --git a/Shaders/painter/hlsl/src/layer_copy.frag.hlsl b/Shaders/painter/hlsl/src/layer_copy.frag.hlsl deleted file mode 100644 index 6a653ae3..00000000 --- a/Shaders/painter/hlsl/src/layer_copy.frag.hlsl +++ /dev/null @@ -1,5 +0,0 @@ -Texture2D tex; -SamplerState _tex_sampler; -float4 main(float4 color : TEXCOORD0, float2 texCoord : TEXCOORD1) : SV_Target0 { - return tex.SampleLevel(_tex_sampler, texCoord, 0).rgba * color; -} diff --git a/Shaders/painter/hlsl/src/layer_merge.frag.hlsl b/Shaders/painter/hlsl/src/layer_merge.frag.hlsl deleted file mode 100644 index a422f0a7..00000000 --- a/Shaders/painter/hlsl/src/layer_merge.frag.hlsl +++ /dev/null @@ -1,90 +0,0 @@ -Texture2D tex0; -SamplerState _tex0_sampler; -Texture2D tex1; -SamplerState _tex1_sampler; -Texture2D texmask; -SamplerState _texmask_sampler; -Texture2D texa; -SamplerState _texa_sampler; -uniform float opac; -uniform int blending; -float3 hsv_to_rgb(const float3 c) { - const float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * lerp(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} -float3 rgb_to_hsv(const float3 c) { - const float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - float4 p = lerp(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); - float4 q = lerp(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -} -struct SPIRV_Cross_Output { float4 color0 : SV_Target0; }; -SPIRV_Cross_Output main(float2 texCoord : TEXCOORD0) { - float4 col0 = tex0.SampleLevel(_tex0_sampler, texCoord, 0); - float4 cola = texa.SampleLevel(_texa_sampler, texCoord, 0); - float str = col0.a * opac; - str *= texmask.SampleLevel(_texmask_sampler, texCoord, 0).r; - SPIRV_Cross_Output stage_output; - if (blending == -1) { // Merging _nor and _pack - float4 col1 = tex1.SampleLevel(_tex1_sampler, texCoord, 0); - stage_output.color0 = float4(lerp(cola, col1, str)); - } - else if (blending == 0) { // Mix - stage_output.color0 = float4(lerp(cola.rgb, col0.rgb, str), max(col0.a, cola.a)); - } - else if (blending == 1) { // Darken - stage_output.color0 = float4(lerp(cola.rgb, min(cola.rgb, col0.rgb), str), max(col0.a, cola.a)); - } - else if (blending == 2) { // Multiply - stage_output.color0 = float4(lerp(cola.rgb, cola.rgb * col0.rgb, str), max(col0.a, cola.a)); - } - else if (blending == 3) { // Burn - stage_output.color0 = float4(lerp(cola.rgb, float3(1.0, 1.0, 1.0) - (float3(1.0, 1.0, 1.0) - cola.rgb) / col0.rgb, str), max(col0.a, cola.a)); - } - else if (blending == 4) { // Lighten - stage_output.color0 = float4(max(cola.rgb, col0.rgb * str), max(col0.a, cola.a)); - } - else if (blending == 5) { // Screen - stage_output.color0 = float4((float3(1.0, 1.0, 1.0) - (float3(1.0 - str, 1.0 - str, 1.0 - str) + str * (float3(1.0, 1.0, 1.0) - col0.rgb)) * (float3(1.0, 1.0, 1.0) - cola.rgb)), max(col0.a, cola.a)); - } - else if (blending == 6) { // Dodge - stage_output.color0 = float4(lerp(cola.rgb, cola.rgb / (float3(1.0, 1.0, 1.0) - col0.rgb), str), max(col0.a, cola.a)); - } - else if (blending == 7) { // Add - stage_output.color0 = float4(lerp(cola.rgb, cola.rgb + col0.rgb, str), max(col0.a, cola.a)); - } - else if (blending == 8) { // Overlay - stage_output.color0 = float4(lerp(cola.rgb, (cola.rgb < float3(0.5, 0.5, 0.5) ? float3(2.0, 2.0, 2.0) * cola.rgb * col0.rgb : float3(1.0, 1.0, 1.0) - float3(2.0, 2.0, 2.0) * (float3(1.0, 1.0, 1.0) - col0.rgb) * (float3(1.0, 1.0, 1.0) - cola.rgb)), str), max(col0.a, cola.a)); - } - else if (blending == 9) { // Soft Light - stage_output.color0 = float4(((1.0 - str) * cola.rgb + str * ((float3(1.0, 1.0, 1.0) - cola.rgb) * col0.rgb * cola.rgb + cola.rgb * (float3(1.0, 1.0, 1.0) - (float3(1.0, 1.0, 1.0) - col0.rgb) * (float3(1.0, 1.0, 1.0) - cola.rgb)))), max(col0.a, cola.a)); - } - else if (blending == 10) { // Linear Light - stage_output.color0 = float4((cola.rgb + str * (float3(2.0, 2.0, 2.0) * (col0.rgb - float3(0.5, 0.5, 0.5)))), max(col0.a, cola.a)); - } - else if (blending == 11) { // Difference - stage_output.color0 = float4(lerp(cola.rgb, abs(cola.rgb - col0.rgb), str), max(col0.a, cola.a)); - } - else if (blending == 12) { // Subtract - stage_output.color0 = float4(lerp(cola.rgb, cola.rgb - col0.rgb, str), max(col0.a, cola.a)); - } - else if (blending == 13) { // Divide - stage_output.color0 = float4(float3(1.0 - str, 1.0 - str, 1.0 - str) * cola.rgb + float3(str, str, str) * cola.rgb / col0.rgb, max(col0.a, cola.a)); - } - else if (blending == 14) { // Hue - stage_output.color0 = float4(lerp(cola.rgb, hsv_to_rgb(float3(rgb_to_hsv(col0.rgb).r, rgb_to_hsv(cola.rgb).g, rgb_to_hsv(cola.rgb).b)), str), max(col0.a, cola.a)); - } - else if (blending == 15) { // Saturation - stage_output.color0 = float4(lerp(cola.rgb, hsv_to_rgb(float3(rgb_to_hsv(cola.rgb).r, rgb_to_hsv(col0.rgb).g, rgb_to_hsv(cola.rgb).b)), str), max(col0.a, cola.a)); - } - else if (blending == 16) { // Color - stage_output.color0 = float4(lerp(cola.rgb, hsv_to_rgb(float3(rgb_to_hsv(col0.rgb).r, rgb_to_hsv(col0.rgb).g, rgb_to_hsv(cola.rgb).b)), str), max(col0.a, cola.a)); - } - else { // Value - stage_output.color0 = float4(lerp(cola.rgb, hsv_to_rgb(float3(rgb_to_hsv(cola.rgb).r, rgb_to_hsv(cola.rgb).g, rgb_to_hsv(col0.rgb).b)), str), max(col0.a, cola.a)); - } - return stage_output; -} diff --git a/Shaders/painter/hlsl/src/layer_merge.vert.hlsl b/Shaders/painter/hlsl/src/layer_merge.vert.hlsl deleted file mode 100644 index 1cd347f6..00000000 --- a/Shaders/painter/hlsl/src/layer_merge.vert.hlsl +++ /dev/null @@ -1,10 +0,0 @@ -struct SPIRV_Cross_Output { float2 texCoord : TEXCOORD0; float4 gl_Position : SV_Position; }; -SPIRV_Cross_Output main(float2 pos : TEXCOORD0) { - SPIRV_Cross_Output stage_output; - stage_output.gl_Position = float4(pos.xy, 0.0, 1.0); - stage_output.gl_Position.z = (stage_output.gl_Position.z + stage_output.gl_Position.w) * 0.5; - const float2 madd = float2(0.5, 0.5); - stage_output.texCoord = pos.xy * madd + madd; - stage_output.texCoord.y = 1.0 - stage_output.texCoord.y; - return stage_output; -} diff --git a/Shaders/painter/hlsl/src/layer_view.frag.hlsl b/Shaders/painter/hlsl/src/layer_view.frag.hlsl deleted file mode 100644 index 419fdfbe..00000000 --- a/Shaders/painter/hlsl/src/layer_view.frag.hlsl +++ /dev/null @@ -1,25 +0,0 @@ -Texture2D tex; -SamplerState _tex_sampler; -uniform int channel; -float4 main(float4 color : TEXCOORD0, float2 texCoord : TEXCOORD1) : SV_Target0 { - if (channel == 1) { - return tex.SampleLevel(_tex_sampler, texCoord, 0).rrra * color; - } - else if (channel == 2) { - return tex.SampleLevel(_tex_sampler, texCoord, 0).ggga * color; - } - else if (channel == 3) { - return tex.SampleLevel(_tex_sampler, texCoord, 0).bbba * color; - } - else if (channel == 4) { - return tex.SampleLevel(_tex_sampler, texCoord, 0).aaaa * color; - } - else if (channel == 5) { - return tex.SampleLevel(_tex_sampler, texCoord, 0).rgba * color; - } - else { - float4 sample = tex.SampleLevel(_tex_sampler, texCoord, 0).rgba; - sample.rgb *= sample.a; - return sample.rgba * color; - } -} diff --git a/Shaders/painter/hlsl/src/layer_view.vert.hlsl b/Shaders/painter/hlsl/src/layer_view.vert.hlsl deleted file mode 100644 index f07c6cee..00000000 --- a/Shaders/painter/hlsl/src/layer_view.vert.hlsl +++ /dev/null @@ -1,10 +0,0 @@ -uniform float4x4 projectionMatrix; -struct SPIRV_Cross_Output { float4 color : TEXCOORD0; float2 texCoord : TEXCOORD1; float4 gl_Position : SV_Position; }; -SPIRV_Cross_Output main(float4 col : TEXCOORD0, float3 pos : TEXCOORD1, float2 tex : TEXCOORD2) { - SPIRV_Cross_Output stage_output; - stage_output.gl_Position = mul(float4(pos, 1.0f), projectionMatrix); - stage_output.gl_Position.z = (stage_output.gl_Position.z + stage_output.gl_Position.w) * 0.5; - stage_output.texCoord = tex; - stage_output.color = col; - return stage_output; -} diff --git a/Shaders/painter/hlsl/src/mask_merge.frag.hlsl b/Shaders/painter/hlsl/src/mask_merge.frag.hlsl deleted file mode 100644 index 96ad14a2..00000000 --- a/Shaders/painter/hlsl/src/mask_merge.frag.hlsl +++ /dev/null @@ -1,12 +0,0 @@ -Texture2D tex0; -SamplerState _tex0_sampler; -Texture2D texa; -SamplerState _texa_sampler; -struct SPIRV_Cross_Output { float4 color0 : SV_Target0; }; -SPIRV_Cross_Output main(float2 texCoord : TEXCOORD0) { - float4 col0 = tex0.SampleLevel(_tex0_sampler, texCoord, 0); - float mask = texa.SampleLevel(_texa_sampler, texCoord, 0).r; - SPIRV_Cross_Output stage_output; - stage_output.color0 = float4(col0.rgb, col0.a * mask); - return stage_output; -} diff --git a/Shaders/painter/glsl/layer_copy.frag.glsl b/Shaders/painter/layer_copy.frag.glsl similarity index 100% rename from Shaders/painter/glsl/layer_copy.frag.glsl rename to Shaders/painter/layer_copy.frag.glsl diff --git a/Shaders/painter/glsl/layer_merge.frag.glsl b/Shaders/painter/layer_merge.frag.glsl similarity index 100% rename from Shaders/painter/glsl/layer_merge.frag.glsl rename to Shaders/painter/layer_merge.frag.glsl diff --git a/Shaders/painter/glsl/layer_merge.vert.glsl b/Shaders/painter/layer_merge.vert.glsl similarity index 76% rename from Shaders/painter/glsl/layer_merge.vert.glsl rename to Shaders/painter/layer_merge.vert.glsl index e6f07bcc..ba55c4c5 100644 --- a/Shaders/painter/glsl/layer_merge.vert.glsl +++ b/Shaders/painter/layer_merge.vert.glsl @@ -5,4 +5,7 @@ void main() { gl_Position = vec4(pos.xy, 0.0, 1.0); const vec2 madd = vec2(0.5, 0.5); texCoord = pos.xy * madd + madd; + #ifdef HLSL + texCoord.y = 1.0 - texCoord.y; + #endif } diff --git a/Shaders/painter/glsl/layer_view.frag.glsl b/Shaders/painter/layer_view.frag.glsl similarity index 100% rename from Shaders/painter/glsl/layer_view.frag.glsl rename to Shaders/painter/layer_view.frag.glsl diff --git a/Shaders/painter/glsl/layer_view.vert.glsl b/Shaders/painter/layer_view.vert.glsl similarity index 100% rename from Shaders/painter/glsl/layer_view.vert.glsl rename to Shaders/painter/layer_view.vert.glsl diff --git a/Shaders/painter/glsl/mask_merge.frag.glsl b/Shaders/painter/mask_merge.frag.glsl similarity index 100% rename from Shaders/painter/glsl/mask_merge.frag.glsl rename to Shaders/painter/mask_merge.frag.glsl diff --git a/khafile.js b/khafile.js index ce83edf3..b26ed29f 100644 --- a/khafile.js +++ b/khafile.js @@ -124,12 +124,6 @@ else { // painter, creator project.addAssets("Assets/painter/export_presets/*", { notinlist: true, destination: "data/export_presets/{name}" }); project.addAssets("Assets/painter/keymap_presets/*", { notinlist: true, destination: "data/keymap_presets/{name}" }); - if (process.platform === "win32" && win_hlsl && !android && !ios) { - project.addShaders("Shaders/painter/hlsl/*.glsl", { noprocessing: true, noembed: false }); - } - else { - project.addShaders("Shaders/painter/glsl/*.glsl", { noembed: false }); - } } if (build === "painter") {