From 4e7ef7ed939d4658c9473aef9a78a17a50aee018 Mon Sep 17 00:00:00 2001 From: xiangsilian Date: Sat, 20 Sep 2025 21:48:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90mvp=E7=9F=A9=E9=98=B5?= =?UTF-8?q?=E5=92=8Cshader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shaders/texture_loading/glsl/pointcloud.vert | 20 ++++++------------ .../texture_loading/glsl/pointcloud.vert.spv | Bin 1560 -> 1784 bytes 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/shaders/texture_loading/glsl/pointcloud.vert b/shaders/texture_loading/glsl/pointcloud.vert index 9751fb5..97ea1cf 100644 --- a/shaders/texture_loading/glsl/pointcloud.vert +++ b/shaders/texture_loading/glsl/pointcloud.vert @@ -5,23 +5,17 @@ layout(location = 1) in vec3 inColor; layout(location = 0) out vec3 fragColor; -// --- 修改:匹配 ubo_vs 的内存布局 --- -// ubo_vs 在 C++ 中的布局是 projection(0), model(64), view_pos(128), lod_bias(144) -// 我们只需要 projection 和 model layout(binding = 0) uniform UniformBufferObject { - mat4 proj; // 对应 ubo_vs.projection (偏移 0) - mat4 model; // 对应 ubo_vs.model (偏移 64) - // view_pos 和 lod_bias 在内存中,但这里不声明,着色器不会直接访问它们 - // 重要的是 proj 和 model 的位置和大小必须匹配 ubo_vs 中的对应部分 + mat4 proj; + mat4 model; + mat4 view; } ubo; -// --- 修改结束 --- void main() { - // 注意:通常 MVP 是 Model * View * Projection - // 但您的 ubo_vs.model 似乎已经包含了 View 变换 (ubo_vs.model = view_matrix * ...) - // 所以这里直接使用 ubo.model 和 ubo.proj - // 如果渲染结果不正确,请检查 ubo_vs.model 的构成 - gl_Position = ubo.proj * ubo.model * vec4(inPosition, 1.0); + // 预计算MVP矩阵以减少乘法次数 + mat4 mvp = ubo.proj * ubo.view * ubo.model; + //vec3 pos = vec3(2.0, inPosition.y, inPosition.z); + gl_Position = mvp * vec4(inPosition, 1.0); fragColor = inColor; gl_PointSize = 2.0; } \ No newline at end of file diff --git a/shaders/texture_loading/glsl/pointcloud.vert.spv b/shaders/texture_loading/glsl/pointcloud.vert.spv index b5780e2d81a30ba31d66589eef5462c4546922b2..239970f4ee11fa95861260d12f5bbef680430c44 100644 GIT binary patch literal 1784 zcmZ9M+fEZv6o$7wfv6xN2NmlSJfrml#>A*7nsU*k7^1fgv{SOlbf%e3@o>c}=p*@5 z-kA7*)7j00-K?(l|Le5(T7_a^eae_~=7PCow#@j9&8 zO)(85X3m^X?UKIx2Q~zFlG~Ce5)z8~6r}$sp=4%EquFk>T8-wXc4shX50f8(-wtf( zx4Sm>JBdBzBJw@U>M^4p{gZ(yng z>qX_%C$|~I(J|U_yr&;^{UFD2?-T2PlTv0;Q!-|B7|E`fs_dhnz30bY{W$Tz6I01} zY<$tsCN>JiPNnhmNO>D3`}U_^O3v6vFZp%?JNRga$wAohCq5>QZxjR*ANTRZbISTK za~n=trW`xy#Ro?_Q4qyxTq)g&4aZDFHJBB>cQsLLPFb?6Z-@0GF_+J9>%ttD$J_FG z;InyfF6OFiVwk^+S(FX`TXo1;l8^`Q@>XP%$DUl?HQDek@49Sq;os`U z+z-yh*JQ(inb92y^Zl&8y!l?nNlm!>8OO|A+=Gl`K6{z~Gk7Q=pLqQ2>6hx_+mO(k s7~aF)9!oq4v*NB`;@sVy$!1sh*ddr)cC;z+B+LRom_7c}W?xDE1D@7>n*aa+ literal 1560 zcmZ9L-EPxB5QUc{Zc9sBO6de){YQ zj1^POiEviU#e84WcX(oBf@RrF*?rjqSyg`(`QIw2nMLDw0>9h!J0F7HXcUaIZ&4UT zHV%WnO~YPhzl87>N<16)qDj9@@Wd#e>FKUZI^!$~j>7bFm}cQug+dFQJ-K9TGn>Rh z=W{+9a@@w*vHh--sVQ>YS-FGAj^5jGb`tl(S&j*in?%tp=Se5pS)O{V$$yINAW4Vs zCWAqkc2CcxPd&Um2XB-n=Xi&4pJCDuBYFC*%TG=d?Y(@aHl9hyF=jkSPtFdKC`t30 zT0V0d7l^MO%mpons$kD@-eH^zhIbe>U}$w1doX5CZ!{LYYcoxrF!``G$p>1{h<8ce&GqFp<{g1?&PvWJ z`f?8Os*JU*nAy^od)4)2o?saLugIeZoc_ej4vhTO=^no8zok7o(0xN59oz^0jyySV z`Vlj0FzVsnk{R>k4g5RWQOg~P?@eP@Pt0!v$Mxg4Dfin`thG=5BW>Vv&U3vQbfBFD z{znLJ>8-wK+mNA`nY|JdotrXn$Jy2%4!RxZn)cwo)Q6huGU~wLaDUzp+CPfJeHt?N z#vIn1V(4+$?iAzhN16$Q{F*E+FslSl@1A!cJPXGV_