From a76b8725cd5f0c0b77c332fb08b30d9ab97092cf Mon Sep 17 00:00:00 2001 From: John Alanbrook Date: Thu, 9 Jan 2025 23:20:18 -0600 Subject: [PATCH] fix ps1 shader --- scripts/render.js | 2 + shaders/dxil/dbgline.frag.dxil | Bin 2960 -> 2960 bytes shaders/dxil/dbgline.vert.dxil | Bin 4440 -> 4440 bytes shaders/dxil/model.frag.dxil | Bin 4292 -> 4292 bytes shaders/dxil/model.vert.dxil | Bin 5460 -> 5460 bytes shaders/dxil/model_lit.frag.dxil | Bin 4764 -> 4764 bytes shaders/dxil/post.frag.dxil | Bin 3800 -> 3800 bytes shaders/dxil/post.vert.dxil | Bin 4272 -> 4272 bytes shaders/dxil/ps1.frag.dxil | Bin 0 -> 4492 bytes shaders/dxil/ps1.vert.dxil | Bin 0 -> 5152 bytes shaders/dxil/rectangle.frag.dxil | Bin 2952 -> 2952 bytes shaders/dxil/sprite.frag.dxil | Bin 3968 -> 3968 bytes shaders/dxil/sprite.vert.dxil | Bin 5152 -> 5152 bytes shaders/msl/ps1.frag.msl | 28 ++++++ shaders/msl/ps1.vert.msl | 50 +++++++++++ shaders/ps1.frag.hlsl | 15 ++-- shaders/ps1.vert.hlsl | 8 ++ shaders/reflection/ps1.frag.json | 66 ++++++++++++++ shaders/reflection/ps1.vert.json | 145 +++++++++++++++++++++++++++++++ shaders/sprite.vert.hlsl | 1 - shaders/spv/ps1.frag.spv | Bin 0 -> 1916 bytes shaders/spv/ps1.vert.spv | Bin 0 -> 2208 bytes source/qjs_imgui.cpp | 16 ++-- 23 files changed, 313 insertions(+), 18 deletions(-) diff --git a/scripts/render.js b/scripts/render.js index 438e9983..b386680e 100644 --- a/scripts/render.js +++ b/scripts/render.js @@ -651,6 +651,8 @@ function gpupresent() filter:"nearest", load: "clear" }); + + imgui.prepend(cmds); // now imgui var pass = cmds.render_pass({ diff --git a/shaders/dxil/dbgline.frag.dxil b/shaders/dxil/dbgline.frag.dxil index b34f0bb33a15feea1d8945ae9e43caa02d2b0f92..fcc2b2cfff5d22cc8c83eb88ad11ac85f559f68f 100644 GIT binary patch delta 91 zcmbOrK0#c>CBn&>L37SOBgga7(`;9L&2VymwNYduGvCgcCm9_TPjjx;JiSw~dGluG kvrGavm*}Ki?x|#aCB(gYdyr83<_T=9Oz0{XbG&5&0E{aoApigX delta 91 zcmbOrK0#c>CBn&Bm%H1rpYN7mY0lprU!R2i+9)!SnQ!C9iHwd5J2x6~3vU)&y?Hb9 kStfzA_b;FQb1CKT9V^+aLW5w=%@f#Inb1`(=6K5l0RHMH2LJ#7 diff --git a/shaders/dxil/dbgline.vert.dxil b/shaders/dxil/dbgline.vert.dxil index 84da4bd6212640b5b0f58b9e11a88e724a2bcd77..c2c3121ef7b1fc4f682e3b7c5561c468a32b230b 100644 GIT binary patch delta 91 zcmcbibVEtRCBn%$bWvoQ>kY2^bA^I$aDAQkW24Ag7QUS`Pck|xp5|Pwd3vW}^XBs` kUs(k7I#)e?`+o9vo_n&63)b&_y7>y{QYLhj?K~G*0B%Jp2><{9 delta 91 zcmcbibVEtRCBn)1L$$*DB~hxow+b+dtvXe9YNNhgo3C&#WkOfk&U29k04iiBp#T5? diff --git a/shaders/dxil/model.frag.dxil b/shaders/dxil/model.frag.dxil index 41df505cbda8f4cbee2c611485625d86f2ad276e..5c1766280ca9ad841b3b4d1c87b6977743c92636 100644 GIT binary patch delta 91 zcmX@2ctlaeCBn%$>HY6{8)jbRV&*PSixc5v*(kD?m2c&r-zc(|m2cz5iHwd5J2x6~3vU)&z4<=t kMrHw-3(<>WFWn9oI~--WwCAYA<^`OB%;+lj^RTi20GG`qDF6Tf diff --git a/shaders/dxil/model.vert.dxil b/shaders/dxil/model.vert.dxil index 1a758fc29dcdc422c8bb3e3eef259b5575d4e3f9..0ea359c819c49e2c5bebd49ecb37c460a36d60e4 100644 GIT binary patch delta 90 zcmcbjbwx|WCBn(MnpI{0)5(6O7U>Uamrt0cvQfmAjc@17lZ=jvr#V+^p5Ce0yg8n2 jBC7!RzL($HzdaICo30uizAowbCZ4xU=n8-HMX~_^sq-dB delta 90 zcmcbjbwx|WCBn&B`cPY%NrJn!ci^VTs>0{)8%1o{_%?2w$mqDRbE6@*@Mgi)o8#Fg ivI@)(j{`|kEAKl(y{Yp{y&QA&J%?@0Z%;+kQ^Il~E0Fq55&j0`b diff --git a/shaders/dxil/post.frag.dxil b/shaders/dxil/post.frag.dxil index d3310964e9e7c183676788bfe7b3080905a0eb80..caeb8b2cb86279d997efb76ac1cc1e3aafb5103f 100644 GIT binary patch delta 91 zcmca1dqY;lCBn&>aeAxj3TCd;Z97gY92Vg+-6(RFg>UD~lZ=jvr#V+^p5Ce0y!kzg jFSCHwQ{fjr+pOKAt2VFbd40%tvkwO=GrG!n?n-6=bZ{hL delta 91 zcmca1dqY;lCBn)1>9Mbq->nz;DXEennmk|T$VQQ~EPNX`PGodk*tyY=TX?hJ>do(2 ke3=FO{yt@@e|1T#^IAwUhxqKpn|(M~nbB3ob5}A003A&wn*aa+ diff --git a/shaders/dxil/post.vert.dxil b/shaders/dxil/post.vert.dxil index 85af8ed16297bd2e184d5e70e23c61063344b649..0ef3caf8fbf7e3836723f25bf126951b2f2f3382 100644 GIT binary patch delta 91 zcmdm>xIt0GCBn%$J!OpuPfo@CO_M__TD;V{H;Sxf;oCX$B%`C^Y0lM}r*|qgZ$8iR jkwu`_!>nWtGh=Cznq_=P-K@gR7dRI(p{uOtF=PP%cA6ve delta 91 zcmdm>xIt0GCBn&B=Jvk+e=nyB`8yt3a)B-6{zj3tEPNX`PGodk*tyY=TX?hJ>dog_ kKC%d0YG(Sl-9@Zw%iOu!EK=VmY`(y`kO^I7J&z#^07FS9X8-^I diff --git a/shaders/dxil/ps1.frag.dxil b/shaders/dxil/ps1.frag.dxil index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ec3dfb2285ff6d5de18ce4f54d8260d076c626fb 100644 GIT binary patch literal 4492 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 literal 0 HcmV?d00001 diff --git a/shaders/dxil/ps1.vert.dxil b/shaders/dxil/ps1.vert.dxil index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e28f3bcf8fb6af2bbcd286138a73cfa725980bad 100644 GIT binary patch literal 5152 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 jWD=U@m7Pac$}T&*c>)_N6S~U998Z}5E%79h delta 91 zcmeAW?+_PpiEwg$F>C#%%u1hBgX#+`^Rm|M-6%4ZnQ!C9iHwd5J2x6~3vU)&y?HzH kNhSdar>FW=zk7fDG5-4Oz#5j#n|f6P^=nIc;>`Y3Z4|l7!nbqgNk&J-)10d{Pw!N0-u#~> jky#+<`l;8&EIq0kn)AU1=iHwd5J2x6~3vU)&z4<>& jBD27+|M#843w#6m7+BA9uX_7pa{-4aGrG#j+;5oyx=bai diff --git a/shaders/dxil/sprite.vert.dxil b/shaders/dxil/sprite.vert.dxil index a633cbd1043ab1a95daeae517b819767ef89ef43..e28f3bcf8fb6af2bbcd286138a73cfa725980bad 100644 GIT binary patch delta 91 zcmZ3Wu|Pw_CBn(s?a|H&nWleqYHHbT{yEd`yHTW+m2cln jCaXZ+FY~}I4eJIA9=5tRK^wu%0^CQL&{aO>wPgbUrz9h} delta 91 zcmZ3Wu|Pw_CBn&BBjv1Eqph-3cxw5}Q#>;58%0W4`8IBx$mqDRbE6@*@Mgi)o2Rp8 jvI^M#6~D +#include + +using namespace metal; + +struct type_Globals +{ + float4 ditherPattern2x2[4]; +}; + +struct main0_out +{ + float4 out_var_SV_TARGET [[color(0)]]; +}; + +struct main0_in +{ + float2 in_var_TEXCOORD0 [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], constant type_Globals& _Globals [[buffer(0)]], texture2d diffuseTexture [[texture(0)]], sampler smp [[sampler(0)]], float4 gl_FragCoord [[position]]) +{ + main0_out out = {}; + float4 _61 = fast::clamp(diffuseTexture.sample(smp, in.in_var_TEXCOORD0) + float4(0.03125 * _Globals.ditherPattern2x2[((int(gl_FragCoord.y) & 1) * 2) + (int(gl_FragCoord.x) & 1)].x), float4(0.0), float4(1.0)); + out.out_var_SV_TARGET = float4(rint(_61.xyz * 31.0) * float3(0.0322580635547637939453125), rint(_61.w * 31.0) * 0.0322580635547637939453125); + return out; +} + diff --git a/shaders/msl/ps1.vert.msl b/shaders/msl/ps1.vert.msl index e69de29b..221a41ed 100644 --- a/shaders/msl/ps1.vert.msl +++ b/shaders/msl/ps1.vert.msl @@ -0,0 +1,50 @@ +#include +#include + +using namespace metal; + +struct type_TransformBuffer +{ + float4x4 world_to_projection; + float4x4 projection_to_world; + float4x4 world_to_view; + float4x4 view_to_projection; + packed_float3 camera_pos_world; + float viewport_min_z; + packed_float3 camera_dir_world; + float viewport_max_z; + float2 viewport_size; + float2 viewport_offset; + float2 render_size; + float time; +}; + +struct type_model +{ + float4x4 model; + float4 color; +}; + +struct main0_out +{ + float2 out_var_TEXCOORD0 [[user(locn0)]]; + float4 out_var_COLOR0 [[user(locn1)]]; + float4 gl_Position [[position]]; +}; + +struct main0_in +{ + float2 in_var_pos [[attribute(0)]]; + float2 in_var_uv [[attribute(1)]]; + float4 in_var_color [[attribute(2)]]; +}; + +vertex main0_out main0(main0_in in [[stage_in]], constant type_TransformBuffer& TransformBuffer [[buffer(0)]], constant type_model& model [[buffer(1)]]) +{ + main0_out out = {}; + out.gl_Position = TransformBuffer.world_to_projection * (model.model * float4(in.in_var_pos, 0.0, 1.0)); + out.out_var_TEXCOORD0 = in.in_var_uv; + out.out_var_COLOR0 = in.in_var_color * model.color; + return out; +} + diff --git a/shaders/ps1.frag.hlsl b/shaders/ps1.frag.hlsl index e2add747..f3105e1e 100644 --- a/shaders/ps1.frag.hlsl +++ b/shaders/ps1.frag.hlsl @@ -1,11 +1,5 @@ -SamplerState pointSampler -{ - Filter = MIN_MAG_MIP_POINT; // Nearest-neighbor - AddressU = Wrap; - AddressV = Wrap; -}; - -Texture2D diffuseTexture : register(t0); +Texture2D diffuseTexture : register(t0,space2); +SamplerState smp : register(s0,space2); struct PSInput { @@ -18,10 +12,10 @@ float ditherPattern2x2[4] = { 0.75, 0.25 }; -float4 mainPS(PSInput input) : SV_TARGET +float4 main(PSInput input) : SV_TARGET { // Sample texture with nearest-neighbor - float4 color = diffuseTexture.Sample(pointSampler, input.texcoord); + float4 color = diffuseTexture.Sample(smp, input.texcoord); // Optional: Affine distortion effect // If you want to simulate affine warping, you could do some screen-space @@ -40,6 +34,7 @@ float4 mainPS(PSInput input) : SV_TARGET // To simulate PS1 color quantization (e.g. to 5 bits for R,G,B): // We'll quantize each channel. // Suppose colorBitDepth.x = 5 means 5 bits for R/G/B, that’s 32 steps. + float3 colorBitDepth = float3(5,5,5); float stepsRGB = pow(2.0, colorBitDepth.x); float stepsA = pow(2.0, colorBitDepth.y); diff --git a/shaders/ps1.vert.hlsl b/shaders/ps1.vert.hlsl index 9daff9da..42f54ec4 100644 --- a/shaders/ps1.vert.hlsl +++ b/shaders/ps1.vert.hlsl @@ -1,3 +1,5 @@ +#include "common/vertex.hlsl" + struct VSInput { float3 position : POSITION; @@ -10,6 +12,11 @@ struct VSOutput float2 texcoord : TEXCOORD0; }; +output vertex(output i) +{ + return i; +} +/* VSOutput mainVS(VSInput input) { VSOutput output; @@ -39,3 +46,4 @@ VSOutput mainVS(VSInput input) return output; } +*/ \ No newline at end of file diff --git a/shaders/reflection/ps1.frag.json b/shaders/reflection/ps1.frag.json index e69de29b..ce98ed69 100644 --- a/shaders/reflection/ps1.frag.json +++ b/shaders/reflection/ps1.frag.json @@ -0,0 +1,66 @@ +{ + "entryPoints" : [ + { + "name" : "main", + "mode" : "frag" + } + ], + "types" : { + "_10" : { + "name" : "type.$Globals", + "members" : [ + { + "name" : "ditherPattern2x2", + "type" : "float", + "array" : [ + 4 + ], + "array_size_is_literal" : [ + true + ], + "offset" : 0, + "array_stride" : 16 + } + ] + } + }, + "inputs" : [ + { + "type" : "vec2", + "name" : "in.var.TEXCOORD0", + "location" : 0 + } + ], + "outputs" : [ + { + "type" : "vec4", + "name" : "out.var.SV_TARGET", + "location" : 0 + } + ], + "separate_images" : [ + { + "type" : "texture2D", + "name" : "diffuseTexture", + "set" : 2, + "binding" : 0 + } + ], + "separate_samplers" : [ + { + "type" : "sampler", + "name" : "smp", + "set" : 2, + "binding" : 0 + } + ], + "ubos" : [ + { + "type" : "_10", + "name" : "type.$Globals", + "block_size" : 64, + "set" : 0, + "binding" : 0 + } + ] +} \ No newline at end of file diff --git a/shaders/reflection/ps1.vert.json b/shaders/reflection/ps1.vert.json index e69de29b..1eac9000 100644 --- a/shaders/reflection/ps1.vert.json +++ b/shaders/reflection/ps1.vert.json @@ -0,0 +1,145 @@ +{ + "entryPoints" : [ + { + "name" : "main", + "mode" : "vert" + } + ], + "types" : { + "_8" : { + "name" : "type.TransformBuffer", + "members" : [ + { + "name" : "world_to_projection", + "type" : "mat4", + "offset" : 0, + "matrix_stride" : 16, + "row_major" : true + }, + { + "name" : "projection_to_world", + "type" : "mat4", + "offset" : 64, + "matrix_stride" : 16, + "row_major" : true + }, + { + "name" : "world_to_view", + "type" : "mat4", + "offset" : 128, + "matrix_stride" : 16, + "row_major" : true + }, + { + "name" : "view_to_projection", + "type" : "mat4", + "offset" : 192, + "matrix_stride" : 16, + "row_major" : true + }, + { + "name" : "camera_pos_world", + "type" : "vec3", + "offset" : 256 + }, + { + "name" : "viewport_min_z", + "type" : "float", + "offset" : 268 + }, + { + "name" : "camera_dir_world", + "type" : "vec3", + "offset" : 272 + }, + { + "name" : "viewport_max_z", + "type" : "float", + "offset" : 284 + }, + { + "name" : "viewport_size", + "type" : "vec2", + "offset" : 288 + }, + { + "name" : "viewport_offset", + "type" : "vec2", + "offset" : 296 + }, + { + "name" : "render_size", + "type" : "vec2", + "offset" : 304 + }, + { + "name" : "time", + "type" : "float", + "offset" : 312 + } + ] + }, + "_10" : { + "name" : "type.model", + "members" : [ + { + "name" : "model", + "type" : "mat4", + "offset" : 0, + "matrix_stride" : 16, + "row_major" : true + }, + { + "name" : "color", + "type" : "vec4", + "offset" : 64 + } + ] + } + }, + "inputs" : [ + { + "type" : "vec2", + "name" : "in.var.pos", + "location" : 0 + }, + { + "type" : "vec2", + "name" : "in.var.uv", + "location" : 1 + }, + { + "type" : "vec4", + "name" : "in.var.color", + "location" : 2 + } + ], + "outputs" : [ + { + "type" : "vec2", + "name" : "out.var.TEXCOORD0", + "location" : 0 + }, + { + "type" : "vec4", + "name" : "out.var.COLOR0", + "location" : 1 + } + ], + "ubos" : [ + { + "type" : "_8", + "name" : "type.TransformBuffer", + "block_size" : 316, + "set" : 1, + "binding" : 0 + }, + { + "type" : "_10", + "name" : "type.model", + "block_size" : 80, + "set" : 1, + "binding" : 1 + } + ] +} \ No newline at end of file diff --git a/shaders/sprite.vert.hlsl b/shaders/sprite.vert.hlsl index 931ffbf1..9f56ada3 100644 --- a/shaders/sprite.vert.hlsl +++ b/shaders/sprite.vert.hlsl @@ -5,4 +5,3 @@ output vertex(output i) { return i; } - diff --git a/shaders/spv/ps1.frag.spv b/shaders/spv/ps1.frag.spv index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b6da6f9577c29e819f0665e0ab253c9528000fa8 100644 GIT binary patch literal 1916 zcmY+ETTfF#6orRgpi1Q;0&)>sz$^8r6%fS&6>8Ct6rn-hOid5kgci~s48CEaul_Cn z5-%pMZ+gZYhpf(CYwy`Jd(Rx=vAI5DdWz2%i4invGzDqr7urnNOEhxb(#-z!7tX!+2;I68=C*9s5`#aZ z89zEatC`*rKcc8v%~>hj9rl!L-Xir9Kd+fw= z;2F)->3CK)?>Bm%cf>Uc?mq8YdRcV*o_H#oDCBfX-ot$X&0$#?sf9BzsO?hhf#!mC zr}l>ed&23>g21`p)SeTl6VAOo5~%Y)x#^E55QF|fE6Dj+KqnXDy<+Jb{}9-Z(NaFX zho=I%i^U=LQZdo?@iMt5np35c{Us31fURMO} zif<1;wQ}AU0=}Q&`CrQBPSAJ5Z)jCEdKBLkPaj?h^n#eQx`$Q}sEyv>=Nsf(tH{qC zt_j2d2C>}VFXhC)E)c_8NQd{nA=|~_=e)!gg$;ps;rjbpHo3WTSJ$R&beEIbw*;3H wzl$w}KHiwi`9?N-F`QPGjYbZqZHF55xc=5kW;P;0KCUR))l=C>mIhR0#`qO+%;27}{y311Kvt?){Ve zv)q_?esAWMXB~3;-Z}T4`|iE(Q5szxcW%TvH|aL?%Qxdj3#Q~T-YIu|u1@1(e+t{W+I???ttPwAt;qleF{Uq}`5E(bD98_Gd|Y+-hV=qn9RM zqoXWNx&uEoT+#&jX!*x|erg%$PvhuJ*m6@N)KKbypZbrQohWTKdP%=X?DctWdPCn! z(yY;myN&b9-1J;%TXFiomU&!io8NM6o|m}{eEs-561IM>hQ6fT?njw?bmZJMSsHa) zQQGjTil4IcH!x`H7DF!P z9(QY}&9tW35mWYWqTo(Wy{_WlNWob;MULwn=aQ4mCph?YxLvRBf8-rfKeIF6c73nD zF9$VHlfA(mVeTh?oz8)&X-UQh=KjIxz}z>OI50JY@thmRGshK~>A}k~KJ=U&`oZ{# z-&J+o8Q*HY{KIk9v}{*-EROn2M-FsbL)@^AxKKxL=q_ZI3vO5k7wVW5x?eKW!42!+ zLLGZ_G;KQW1#TkXm^IvVz>ynnG2oa5Ts7dBJKS2p@s{B>0*?8^ZHn8`?URc>sf&0% z{Cpu7_God|BUtIYZc8h9;mA9uNla+1%7|Gn@D1(xZYy?DYgLAi{gjN)FmJ%Qi+84- z5hB;T;%{n2LoEyXoz)5l#(zsI{!)SG3QTQF^3Xq;&`e`18ne9CG1Z;-hki-t(660c z6`n8r@Zbfl)Jz`modQ!U_^wuJG<>hX#LsGyi&~czabGKYH1>bWx!?y{>5Ck%g{hHu z0SBfg?%yyqu^*A)2UCM#YGjUvsgZX}4Dr;+n>CD|cLIK;Na{q(N8P`5T2<>CY3XZO z#`%U#J7qKZ^5S3ezk6TTOr& TlZ!p`WiITQEwO*p$)@Zt?^miC literal 0 HcmV?d00001 diff --git a/source/qjs_imgui.cpp b/source/qjs_imgui.cpp index 606f3b34..a67cce3c 100644 --- a/source/qjs_imgui.cpp +++ b/source/qjs_imgui.cpp @@ -770,15 +770,16 @@ JSC_CCALL(imgui_newframe, ImGui::NewFrame(); ) -JSC_CCALL(imgui_endframe, +JSC_CCALL(imgui_prepend, ImGui::Render(); - ImDrawData *draw_data = ImGui::GetDrawData(); - - SDL_GPUCommandBuffer *cmd = js2SDL_GPUCommandBuffer(js,argv[0]); - Imgui_ImplSDLGPU3_PrepareDrawData(draw_data,cmd); - SDL_GPURenderPass *pass = js2SDL_GPURenderPass(js,argv[1]); + SDL_GPUCommandBuffer *cmd = js2SDL_GPUCommandBuffer(js,argv[0]); + Imgui_ImplSDLGPU3_PrepareDrawData(ImGui::GetDrawData(),cmd); +) - ImGui_ImplSDLGPU3_RenderDrawData(draw_data, cmd, pass); +JSC_CCALL(imgui_endframe, + SDL_GPUCommandBuffer *cmd = js2SDL_GPUCommandBuffer(js,argv[0]); + SDL_GPURenderPass *pass = js2SDL_GPURenderPass(js,argv[1]); + ImGui_ImplSDLGPU3_RenderDrawData(ImGui::GetDrawData(), cmd, pass); ImGui::UpdatePlatformWindows(); ImGui::RenderPlatformWindowsDefault(); ) @@ -862,6 +863,7 @@ static const JSCFunctionListEntry js_imgui_funcs[] = { MIST_FUNC_DEF(imgui, plotmousepos, 0), MIST_FUNC_DEF(imgui, plothovered, 0), MIST_FUNC_DEF(imgui, axeslimits, 4), + MIST_FUNC_DEF(imgui, prepend, 1), MIST_FUNC_DEF(imgui, fitaxis, 1), MIST_FUNC_DEF(imgui, columns, 1), MIST_FUNC_DEF(imgui, nextcolumn, 0),