From fb17107bca903db7ca9384c77b00ce17f9116179 Mon Sep 17 00:00:00 2001 From: olebeck <31539311+olebeck@users.noreply.github.com> Date: Thu, 26 Jun 2025 14:03:20 +0200 Subject: [PATCH] fix rendering somewhat, some geometry shows up --- miniwin/src/d3drm/backends/gxm/Makefile | 10 -- miniwin/src/d3drm/backends/gxm/renderer.cpp | 91 +++++++++--------- .../src/d3drm/backends/gxm/shaders/Makefile | 15 +++ .../cache/clear.frag_550b7e0c6c421575.sdb | Bin 0 -> 1427 bytes .../cache/clear.vert_98a2a6664d8485bc.sdb | Bin 0 -> 1525 bytes .../cache/image.frag_ae725a8caae9bf47.sdb | Bin 0 -> 1683 bytes .../cache/main.frag_a5f9016b18a6a10c.sdb | Bin 0 -> 6748 bytes .../cache/main.vert_02c4a0c27e7c3246.sdb | Bin 0 -> 2704 bytes .../backends/gxm/{ => shaders}/clear.frag.cg | 0 .../backends/gxm/{ => shaders}/clear.frag.gxp | Bin .../backends/gxm/{ => shaders}/clear.vert.cg | 0 .../backends/gxm/{ => shaders}/clear.vert.gxp | Bin .../backends/gxm/{ => shaders}/image.frag.cg | 0 .../backends/gxm/{ => shaders}/image.frag.gxp | Bin .../backends/gxm/{ => shaders}/main.frag.cg | 0 .../backends/gxm/{ => shaders}/main.frag.gxp | Bin .../backends/gxm/{ => shaders}/main.vert.cg | 0 .../backends/gxm/{ => shaders}/main.vert.gxp | Bin miniwin/src/internal/d3drmrenderer_gxm.h | 9 +- 19 files changed, 65 insertions(+), 60 deletions(-) delete mode 100644 miniwin/src/d3drm/backends/gxm/Makefile create mode 100644 miniwin/src/d3drm/backends/gxm/shaders/Makefile create mode 100644 miniwin/src/d3drm/backends/gxm/shaders/cache/clear.frag_550b7e0c6c421575.sdb create mode 100644 miniwin/src/d3drm/backends/gxm/shaders/cache/clear.vert_98a2a6664d8485bc.sdb create mode 100644 miniwin/src/d3drm/backends/gxm/shaders/cache/image.frag_ae725a8caae9bf47.sdb create mode 100644 miniwin/src/d3drm/backends/gxm/shaders/cache/main.frag_a5f9016b18a6a10c.sdb create mode 100644 miniwin/src/d3drm/backends/gxm/shaders/cache/main.vert_02c4a0c27e7c3246.sdb rename miniwin/src/d3drm/backends/gxm/{ => shaders}/clear.frag.cg (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/clear.frag.gxp (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/clear.vert.cg (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/clear.vert.gxp (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/image.frag.cg (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/image.frag.gxp (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/main.frag.cg (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/main.frag.gxp (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/main.vert.cg (100%) rename miniwin/src/d3drm/backends/gxm/{ => shaders}/main.vert.gxp (100%) diff --git a/miniwin/src/d3drm/backends/gxm/Makefile b/miniwin/src/d3drm/backends/gxm/Makefile deleted file mode 100644 index c7ccf0fd..00000000 --- a/miniwin/src/d3drm/backends/gxm/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -shaders += main.frag.gxp main.vert.gxp image.frag.gxp -shaders += clear.frag.gxp clear.vert.gxp - -all: $(shaders) - -%.vert.gxp: %.vert.cg - ./psp2cgc.exe -Wperf -profile sce_vp_psp2 $< -o $@ - -%.frag.gxp: %.frag.cg - ./psp2cgc.exe -Wperf -profile sce_fp_psp2 $< -o $@ diff --git a/miniwin/src/d3drm/backends/gxm/renderer.cpp b/miniwin/src/d3drm/backends/gxm/renderer.cpp index f7f4d947..40301eea 100644 --- a/miniwin/src/d3drm/backends/gxm/renderer.cpp +++ b/miniwin/src/d3drm/backends/gxm/renderer.cpp @@ -23,7 +23,7 @@ bool with_razor = false; #define VITA_GXM_SCREEN_WIDTH 960 #define VITA_GXM_SCREEN_HEIGHT 544 #define VITA_GXM_SCREEN_STRIDE 960 -#define VITA_GXM_PENDING_SWAPS 2 +#define VITA_GXM_PENDING_SWAPS 3 #define VITA_GXM_COLOR_FORMAT SCE_GXM_COLOR_FORMAT_A8B8G8R8 #define VITA_GXM_PIXEL_FORMAT SCE_DISPLAY_PIXELFORMAT_A8B8G8R8 @@ -41,11 +41,11 @@ typedef struct Vertex { } Vertex; -INCBIN(main_vert_gxp, "main.vert.gxp"); -INCBIN(main_frag_gxp, "main.frag.gxp"); -INCBIN(clear_vert_gxp, "clear.vert.gxp"); -INCBIN(clear_frag_gxp, "clear.frag.gxp"); -INCBIN(image_frag_gxp, "image.frag.gxp"); +INCBIN(main_vert_gxp, "shaders/main.vert.gxp"); +INCBIN(main_frag_gxp, "shaders/main.frag.gxp"); +INCBIN(clear_vert_gxp, "shaders/clear.vert.gxp"); +INCBIN(clear_frag_gxp, "shaders/clear.frag.gxp"); +INCBIN(image_frag_gxp, "shaders/image.frag.gxp"); const SceGxmProgram* mainVertexProgramGxp = (const SceGxmProgram*)_inc_main_vert_gxpData; const SceGxmProgram* mainFragmentProgramGxp = (const SceGxmProgram*)_inc_main_frag_gxpData; @@ -481,7 +481,7 @@ static bool create_gxm_renderer(int width, int height, GXMRendererData* data) { // image if(SCE_ERR(sceGxmShaderPatcherCreateFragmentProgram, data->shaderPatcher, - data->mainFragmentProgramId, + data->imageFragmentProgramId, SCE_GXM_OUTPUT_REGISTER_FORMAT_UCHAR4, SCE_GXM_MULTISAMPLE_NONE, &blendInfoTransparent, @@ -490,9 +490,9 @@ static bool create_gxm_renderer(int width, int height, GXMRendererData* data) { )) return false; // vertex uniforms - data->uModelViewMatrixParam = sceGxmProgramFindParameterByName(mainVertexProgramGxp, "uModelViewMatrix"); - data->uNormalMatrixParam = sceGxmProgramFindParameterByName(mainVertexProgramGxp, "uNormalMatrix"); - data->uProjectionMatrixParam = sceGxmProgramFindParameterByName(mainVertexProgramGxp, "uProjectionMatrix"); + data->uModelViewMatrix = sceGxmProgramFindParameterByName(mainVertexProgramGxp, "uModelViewMatrix"); + data->uNormalMatrix = sceGxmProgramFindParameterByName(mainVertexProgramGxp, "uNormalMatrix"); + data->uProjectionMatrix = sceGxmProgramFindParameterByName(mainVertexProgramGxp, "uProjectionMatrix"); // fragment uniforms data->uLights = sceGxmProgramFindParameterByName(mainFragmentProgramGxp, "uLights"); // SceneLight[3] @@ -530,31 +530,6 @@ static bool create_gxm_renderer(int width, int height, GXMRendererData* data) { } -#define VITA_GXM_PENDING_SWAPS 2 - -/* -#include -static tai_hook_ref_t local_open_hook; - -extern "C" { - SceUID hook_local_open(const char *path, int flags, SceMode mode) { - SceUID fd = ({ - struct _tai_hook_user *cur, *next; - cur = (struct _tai_hook_user *)(local_open_hook); - next = (struct _tai_hook_user *)cur->next; - (next == __null) ? - ((SceUID(*)(const char*, int, int))cur->old)(path, flags, mode) : - ((SceUID(*)(const char*, int, int))next->func)(path, flags, mode); - }); - - printf("open in razor: %s, ret: %x", path, fd); - return fd; - } -} -*/ - - - Direct3DRMRenderer* GXMRenderer::Create(DWORD width, DWORD height) { SDL_Log("GXMRenderer::Create width=%d height=%d", width, height); @@ -577,7 +552,11 @@ GXMRenderer::GXMRenderer( DWORD width, DWORD height, GXMRendererData data -) : m_width(width), m_height(height), m_data(data) { +) : m_data(data) { + m_width = width; + m_height = height; + m_virtualWidth = width; + m_virtualHeight = height; m_initialized = true; } @@ -810,8 +789,7 @@ void GXMRenderer::GetDesc(D3DDEVICEDESC* halDesc, D3DDEVICEDESC* helDesc) memset(helDesc, 0, sizeof(D3DDEVICEDESC)); } -const char* GXMRenderer::GetName() -{ +const char* GXMRenderer::GetName() { return "GXM"; } @@ -906,6 +884,10 @@ void GXMRenderer::SubmitDraw( ) { auto& mesh = m_meshes[meshId]; + char marker[256]; + snprintf(marker, sizeof(marker), "SubmitDraw: %d", meshId); + sceGxmPushUserMarker(this->m_data.context, marker); + sceGxmSetVertexProgram(this->m_data.context, this->m_data.mainVertexProgram); if(this->transparencyEnabled) { sceGxmSetFragmentProgram(this->m_data.context, this->m_data.transparentFragmentProgram); @@ -918,9 +900,14 @@ void GXMRenderer::SubmitDraw( sceGxmReserveVertexDefaultUniformBuffer(this->m_data.context, &vertUniforms); sceGxmReserveFragmentDefaultUniformBuffer(this->m_data.context, &fragUniforms); - SET_UNIFORM(vertUniforms, this->m_data.uModelViewMatrixParam, modelViewMatrix, mainVertexProgramGxp); - SET_UNIFORM(vertUniforms, this->m_data.uNormalMatrixParam, normalMatrix, mainVertexProgramGxp); - SET_UNIFORM(vertUniforms, this->m_data.uProjectionMatrixParam, m_projection, mainVertexProgramGxp); + D3DRMMATRIX4D modelViewMatrixTrans; + D3DRMMATRIX4D projectionTrans; + transpose4x4(modelViewMatrix, modelViewMatrixTrans); + transpose4x4(m_projection, projectionTrans); + + SET_UNIFORM(vertUniforms, this->m_data.uModelViewMatrix, modelViewMatrixTrans, mainVertexProgramGxp); + SET_UNIFORM(vertUniforms, this->m_data.uNormalMatrix, normalMatrix, mainVertexProgramGxp); + SET_UNIFORM(vertUniforms, this->m_data.uProjectionMatrix, projectionTrans, mainVertexProgramGxp); float color[4] = { appearance.color.r / 255.0f, @@ -946,6 +933,8 @@ void GXMRenderer::SubmitDraw( mesh.indexBuffer, mesh.indexCount ); + + sceGxmPopUserMarker(this->m_data.context); } HRESULT GXMRenderer::FinalizeFrame() { @@ -961,6 +950,10 @@ void GXMRenderer::Resize(int width, int height, const ViewportTransform& viewpor void GXMRenderer::Clear(float r, float g, float b) { this->StartScene(); + char marker[256]; + snprintf(marker, sizeof(marker), "Clear"); + sceGxmPushUserMarker(this->m_data.context, marker); + sceGxmSetVertexProgram(this->m_data.context, this->m_data.clearVertexProgram); sceGxmSetFragmentProgram(this->m_data.context, this->m_data.clearFragmentProgram); @@ -979,6 +972,8 @@ void GXMRenderer::Clear(float r, float g, float b) { SCE_GXM_INDEX_FORMAT_U16, this->m_data.clearIndicies, 3 ); + + sceGxmPopUserMarker(this->m_data.context); } void GXMRenderer::Flip() { @@ -1008,7 +1003,7 @@ void GXMRenderer::Flip() { this->backBufferIndex = (this->backBufferIndex + 1) % VITA_GXM_DISPLAY_BUFFER_COUNT; } -void CreateOrthoMatrix(float left, float right, float bottom, float top, D3DRMMATRIX4D& outMatrix) +static void CreateOrthoMatrix(float left, float right, float bottom, float top, D3DRMMATRIX4D& outMatrix) { float near = -1.0f; float far = 1.0f; @@ -1040,6 +1035,10 @@ void CreateOrthoMatrix(float left, float right, float bottom, float top, D3DRMMA void GXMRenderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect) { this->StartScene(); + char marker[256]; + snprintf(marker, sizeof(marker), "Draw2DImage: %d", textureId); + sceGxmPushUserMarker(this->m_data.context, marker); + sceGxmSetVertexProgram(this->m_data.context, this->m_data.mainVertexProgram); sceGxmSetFragmentProgram(this->m_data.context, this->m_data.imageFragmentProgram); @@ -1057,10 +1056,11 @@ void GXMRenderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const S CreateOrthoMatrix(left, right, bottom, top, projection); D3DRMMATRIX4D identity = {{1.f, 0.f, 0.f, 0.f}, {0.f, 1.f, 0.f, 0.f}, {0.f, 0.f, 1.f, 0.f}, {0.f, 0.f, 0.f, 1.f}}; + Matrix3x3 normal = {{1.f, 0.f, 0.f}, {0.f, 1.f, 0.f}, {0.f, 0.f, 1.f}}; - SET_UNIFORM(vertUniforms, this->m_data.uModelViewMatrixParam, identity, mainVertexProgramGxp); - SET_UNIFORM(vertUniforms, this->m_data.uNormalMatrixParam, identity, mainVertexProgramGxp); - SET_UNIFORM(vertUniforms, this->m_data.uProjectionMatrixParam, m_projection, mainVertexProgramGxp); + SET_UNIFORM(vertUniforms, this->m_data.uModelViewMatrix, identity, mainVertexProgramGxp); // float4x4 + SET_UNIFORM(vertUniforms, this->m_data.uNormalMatrix, normal, mainVertexProgramGxp); // float3x3 + SET_UNIFORM(vertUniforms, this->m_data.uProjectionMatrix, projection, mainVertexProgramGxp); // float4x4 const GXMTextureCacheEntry& texture = m_textures[textureId]; sceGxmSetFragmentTexture(this->m_data.context, 0, &texture.gxmTexture); @@ -1100,6 +1100,7 @@ void GXMRenderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const S gpuIndices, 4 ); + sceGxmPopUserMarker(this->m_data.context); sceClibMspaceFree(this->m_data.cdramPool, meshBuffer); } diff --git a/miniwin/src/d3drm/backends/gxm/shaders/Makefile b/miniwin/src/d3drm/backends/gxm/shaders/Makefile new file mode 100644 index 00000000..359e2bf9 --- /dev/null +++ b/miniwin/src/d3drm/backends/gxm/shaders/Makefile @@ -0,0 +1,15 @@ +shaders += main.frag.gxp main.vert.gxp image.frag.gxp +shaders += clear.frag.gxp clear.vert.gxp + +all: $(shaders) + +CGCFLAGS = -Wperf -cache -cachedir cache + +cache: + mkdir -p cache + +%.vert.gxp: %.vert.cg | cache + ./psp2cgc.exe $(CGCFLAGS) -profile sce_vp_psp2 $< -o $@ + +%.frag.gxp: %.frag.cg | cache + ./psp2cgc.exe $(CGCFLAGS) -profile sce_fp_psp2 $< -o $@ diff --git a/miniwin/src/d3drm/backends/gxm/shaders/cache/clear.frag_550b7e0c6c421575.sdb b/miniwin/src/d3drm/backends/gxm/shaders/cache/clear.frag_550b7e0c6c421575.sdb new file mode 100644 index 0000000000000000000000000000000000000000..1303ead5bfaa89d1d8a2b2ffae2b1ab8ba3919da GIT binary patch literal 1427 zcmV;E1#J2siwFP!000003(Z(C*V2Uj^HU{ zf-RYtYenYqC|21#!sL;PSkKc{HrERrLtMP8GX#Irv|zEddgcvQlgS{upabF|z}kg# zG7g55i;3rNq$>}8DI<%7^Yi`v`vBdf=w`F)p$z{a!OanTW5Rx$KxhiaW4Mb^a5?t2 zcQfiw$}LpxG>*!!h;Nyo*DBSh@!X0Z>iwEim7pHMa2cDAm?^Y*&Xr8SCi#C?Pp;KfkvT^u(!fwOPWUzJR`G25v4{_O9wj~{mo^bc8Bu2xCX&WEX@ z+KJoHH6WGMdYwg*mp5OY>mj(Dq zv|9$(<+#*LF-x8AiY&4Yw3}@QKyWHxbShwSD&Tw@n!Pwop_@0f8HI)Bt|}k_%uaGy z#;E2n8}~Z+aNu^#^N^yZP{OQpSh2-mr+Vn@6_Xt7TzCv3(LgfnOe)0el`@I>-d{5UU1(=?WYB z`Ze1IdlC-2=yAH70ugtU{!h$rDYI7yS7}QUQlpt=TW2P_ee79{{?@*ZA@EO%!512_ zpmqJ{UrflR{x(}*sEbZ!lu|F0S~*I#3jGj?>=VV*-)$1jG2~!-fv!~bAh?^TNbP93 z`(r}20rQ_sS?q=g_qMqCUSVpg^t*zG$H7zokUdlTON@O5h8*O04TRe?)UH-<${Rx0 h-L&~~*?8-@c0o{kSMb0;zdxrA#lzoU%2!3mi;AtPA!KnmT9H>ra{k)*IGXHKe8FO0(;*#KrOCf=4y!}u#5AegWzu(XEZWW&z%0|>oNB5#l?k#0BaWf zXzY(iLFl+U>OzAbbIT%b^}M;g@z7O_u6DZ)O7O1&)EvS$%FVYCm?onv0$&WhvF}vA z8TLl`7Rq;OMcU)Yw0Q*jY$nMWhsv zvMq5Y9fV9wK`L0Z)rdrxYZ|scDW|vcwFXH75gZbwAX>KPqqtyD10q{3>58;BOUdD$ zkkphD@I`AhNvMuU3S|`f2yK6AiP^3t)g)aCeg;}(I)!faKyj&+t3$Z$AQkLeNH?mM zZG=5IvJFUM854ar%xJ@pVC%6ub&u8JDQ3*H+j?oX#Xf_SxlJMa7nDRt8!{ASgaaj5 zrb$KcH#FY)o)AXf>sO}qp;XcYoBls=Duqg=uK5BQl_a*z-ccj2*Y`%<{`0Qq-Fe=` z_a`I&7ihUK<}7IV7@d3Mj9Zb(kTf^!=2!2oUR~Z@zFP?x7fgG4VrdpkVC^A%1EtXV zc7kr+-d^8bzkTzpV<{klb1EOLj!<=;qTelDwK?0-KPkCBL;YU=8G&-v+x?#ZJNSXzFL)OUzoo;xw#c|4`g1w#Cm(L;JyhnGZ?zz%m8% zO_l^^^lY}+769*DfPXIF;#|P<$}|Udm_iS)anllW#cVEQoa(*EF?FJtzKq>VluEJ0N#jtjIJ6dV z`I&j1ojTQ<47~kgZSgdNeSYOB^6i))ZYfDCDTjrWtD{o-r=;{Jg9GE_QbOtfEyK(d zYiWDlmk>M<(e`lJZkbjBi5tPCO%pQ(SQ!QMqd?-&jG>d!WSC1HGNDMh{Cu)snj4JC zCY2@A({v>*%p#`Z!Dq(wUEPKcgL4Hbhw5V3AP`+*ZSGmK%H9`~!Keiv%gZw0Q9J4{ zB7TFJaUr9GiU#|$BczG`B!m4$X8s&2TLuhnCK9t^@a~(}WtEYK zXQf_)`~OC^e2*D<&@{5&|IZlN+{GHz=U-Bnr*72}A8Ed=#K@^0>F4>yv@uN_n^X>` zk*T{seAe$SN5@w1RWaK_bquoDTvYd8O%@w)n-npP>`leKd)j?3F!@O4jT^J~gW$pE zfW6b;se4SBsd*`E-o`-+GQ5SUu&$+9EneE~rcOmanzVu$6Gq7xPH9TFkMIh_xFw*V b_e=WfWwm=u*s1v;;YH_9FqZ;Yj2Hj_o<8b) literal 0 HcmV?d00001 diff --git a/miniwin/src/d3drm/backends/gxm/shaders/cache/image.frag_ae725a8caae9bf47.sdb b/miniwin/src/d3drm/backends/gxm/shaders/cache/image.frag_ae725a8caae9bf47.sdb new file mode 100644 index 0000000000000000000000000000000000000000..1b709925be7ba4a875c0d4c060516b1444f77e06 GIT binary patch literal 1683 zcmV;E25k8siwFP!000003)NZcZ`(Ey|DL~s)29}wUy_}NXSWEP4hWFNL6dgH>Y|_} z%H~3m8cF%lVgLJ%ddrVQ8iJt zyGs(_7UfD~?h*^lDgT8sa*G2pwrGGCr0q+*XfHOQgC;c?)T5EPAZ-4;8WsR#N&P5-QU@0vOtq`)#P(Rp2Y^AOPQ*bFhUA}m*Qjw`LP+UiW+O(4a$R$YP$J*2QA zQVK}fntCQ3gbWNJWhUzGhegQ=k&p4!R+0oF*doQ0|3TrM?SL?NudfXCp-{q{ssBBz*igQyYwio=N)prT12u5%u03dV&sz52 zp?5LtpAP%o-=X9}o8wdWIl0b(HSR?uT~eKhCx7}fxw?F~{IU|zE|~K4Dwgq?z`BoC zcR+>l*$&a&^#1zcdV2e&5OC1y6D4a9g87H{pC{AlhpS#y;MOn}E6v-bc^j=B$Yvsh z^hy%Wo0C{1;?(dRQaA{q`>?N21kyT^Bo%-x%8iC{v4naT8K`r+g?`YV%3CdNpU zjeYehw^6M9`sb6sPriQL@muGRDSo83!CbH;ATtz}L1n&t z8o7b!B6&8R!<4iWai7zxxr6ncTE?yP15MbbRG3G3R1}sluSC!dX*=i>3;_#(wSD#R2b~<_OxVk~u9gS1hI{NL{^?PKLU(hS)?;9zw8U z(QjKw5=aNGx1ot=U?p?Cf)*<)sYn5fgVL}!Jhc#2lK4bIwIN<6ae(DQEOAg-)Xo;o zDGo9*UNa$-W2@Rj@W{bs&1EaOhGtB82uUZ0QVXV&!%T^`g3>vL(y4(m=j#`M+0S7n zbYBl;zX3}71yBxhlm$(eaN5Uk4i4aqdzgKg&I`ai&0v;lM2s@8gU5iL4Q=NzP^AU* zC9ptTRMNuw0$9(iqM=P|MV&0V820v(HvtOW;-3*_roWT1)smCr!rmD4TzK34;dsil zo+5%iPGe2Xtsw>|pnsi9?2?#exd)mFITurw*-hPN69r&b>0kTis+<94qU zO*g{u7BZlG12v=BtKqa!QS`eh?2z`*eJmh#&MQ}?l14((slxg5 d@>z3vR3VR<3fPhPch%dIe*iEmc^dK>001zuNc#W) literal 0 HcmV?d00001 diff --git a/miniwin/src/d3drm/backends/gxm/shaders/cache/main.frag_a5f9016b18a6a10c.sdb b/miniwin/src/d3drm/backends/gxm/shaders/cache/main.frag_a5f9016b18a6a10c.sdb new file mode 100644 index 0000000000000000000000000000000000000000..72c257d0d3c6a72c61b80c4b668e89a3463ea1c4 GIT binary patch literal 6748 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 literal 0 HcmV?d00001 diff --git a/miniwin/src/d3drm/backends/gxm/shaders/cache/main.vert_02c4a0c27e7c3246.sdb b/miniwin/src/d3drm/backends/gxm/shaders/cache/main.vert_02c4a0c27e7c3246.sdb new file mode 100644 index 0000000000000000000000000000000000000000..c7044589415860ce63bab12b87b18245127f541d GIT binary patch literal 2704 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 K``hPhN&o;|LT9Z2 literal 0 HcmV?d00001 diff --git a/miniwin/src/d3drm/backends/gxm/clear.frag.cg b/miniwin/src/d3drm/backends/gxm/shaders/clear.frag.cg similarity index 100% rename from miniwin/src/d3drm/backends/gxm/clear.frag.cg rename to miniwin/src/d3drm/backends/gxm/shaders/clear.frag.cg diff --git a/miniwin/src/d3drm/backends/gxm/clear.frag.gxp b/miniwin/src/d3drm/backends/gxm/shaders/clear.frag.gxp similarity index 100% rename from miniwin/src/d3drm/backends/gxm/clear.frag.gxp rename to miniwin/src/d3drm/backends/gxm/shaders/clear.frag.gxp diff --git a/miniwin/src/d3drm/backends/gxm/clear.vert.cg b/miniwin/src/d3drm/backends/gxm/shaders/clear.vert.cg similarity index 100% rename from miniwin/src/d3drm/backends/gxm/clear.vert.cg rename to miniwin/src/d3drm/backends/gxm/shaders/clear.vert.cg diff --git a/miniwin/src/d3drm/backends/gxm/clear.vert.gxp b/miniwin/src/d3drm/backends/gxm/shaders/clear.vert.gxp similarity index 100% rename from miniwin/src/d3drm/backends/gxm/clear.vert.gxp rename to miniwin/src/d3drm/backends/gxm/shaders/clear.vert.gxp diff --git a/miniwin/src/d3drm/backends/gxm/image.frag.cg b/miniwin/src/d3drm/backends/gxm/shaders/image.frag.cg similarity index 100% rename from miniwin/src/d3drm/backends/gxm/image.frag.cg rename to miniwin/src/d3drm/backends/gxm/shaders/image.frag.cg diff --git a/miniwin/src/d3drm/backends/gxm/image.frag.gxp b/miniwin/src/d3drm/backends/gxm/shaders/image.frag.gxp similarity index 100% rename from miniwin/src/d3drm/backends/gxm/image.frag.gxp rename to miniwin/src/d3drm/backends/gxm/shaders/image.frag.gxp diff --git a/miniwin/src/d3drm/backends/gxm/main.frag.cg b/miniwin/src/d3drm/backends/gxm/shaders/main.frag.cg similarity index 100% rename from miniwin/src/d3drm/backends/gxm/main.frag.cg rename to miniwin/src/d3drm/backends/gxm/shaders/main.frag.cg diff --git a/miniwin/src/d3drm/backends/gxm/main.frag.gxp b/miniwin/src/d3drm/backends/gxm/shaders/main.frag.gxp similarity index 100% rename from miniwin/src/d3drm/backends/gxm/main.frag.gxp rename to miniwin/src/d3drm/backends/gxm/shaders/main.frag.gxp diff --git a/miniwin/src/d3drm/backends/gxm/main.vert.cg b/miniwin/src/d3drm/backends/gxm/shaders/main.vert.cg similarity index 100% rename from miniwin/src/d3drm/backends/gxm/main.vert.cg rename to miniwin/src/d3drm/backends/gxm/shaders/main.vert.cg diff --git a/miniwin/src/d3drm/backends/gxm/main.vert.gxp b/miniwin/src/d3drm/backends/gxm/shaders/main.vert.gxp similarity index 100% rename from miniwin/src/d3drm/backends/gxm/main.vert.gxp rename to miniwin/src/d3drm/backends/gxm/shaders/main.vert.gxp diff --git a/miniwin/src/internal/d3drmrenderer_gxm.h b/miniwin/src/internal/d3drmrenderer_gxm.h index bf55b84a..59d50aa7 100644 --- a/miniwin/src/internal/d3drmrenderer_gxm.h +++ b/miniwin/src/internal/d3drmrenderer_gxm.h @@ -13,7 +13,7 @@ DEFINE_GUID(GXM_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x58, 0x4D); -#define VITA_GXM_DISPLAY_BUFFER_COUNT 2 +#define VITA_GXM_DISPLAY_BUFFER_COUNT 3 struct GXMTextureCacheEntry { IDirect3DRMTexture* texture; @@ -103,9 +103,9 @@ typedef struct GXMRendererData { SceGxmFragmentProgram* imageFragmentProgram; // 2d images, no lighting // main shader vertex uniforms - const SceGxmProgramParameter* uModelViewMatrixParam; - const SceGxmProgramParameter* uNormalMatrixParam; - const SceGxmProgramParameter* uProjectionMatrixParam; + const SceGxmProgramParameter* uModelViewMatrix; + const SceGxmProgramParameter* uNormalMatrix; + const SceGxmProgramParameter* uProjectionMatrix; // main shader fragment uniforms const SceGxmProgramParameter* uLights; @@ -171,7 +171,6 @@ class GXMRenderer : public Direct3DRMRenderer { std::vector m_textures; std::vector m_meshes; D3DRMMATRIX4D m_projection; - DWORD m_width, m_height; std::vector m_lights; bool transparencyEnabled = false;