Use vertex pulling for wall shadows

This commit is contained in:
2025-11-10 21:33:56 +00:00
parent 1a85d9d562
commit 36d5edc0a6
5 changed files with 47 additions and 10 deletions
+4 -2
View File
@@ -27,8 +27,10 @@ sizeFBOs cfig rdata =
GL_NEAREST
GL_NEAREST
GL_RGBA8
GL_RGBA16F -- i am not sure if this should not be GL_RGBA32F
GL_RGBA16F
GL_RGBA16F -- could possibly recover using depth in a clever way
-- but probably not, because the projection matrix is
-- not always on-center
GL_RGBA16F -- make this smaller?
)
rdata
[fboBase, fboCloud]
+2 -1
View File
@@ -83,7 +83,8 @@ preloadRender = do
wallshader <- makeShaderUsingVBO "wall/basic" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints wallvbo
putStrLn "Setup lighting shaders"
lightingWallShadShad <-
makeShaderUsingVBO "lighting/wallShadow" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo
--makeShaderUsingVBO "lighting/wallShadow" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo
makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao)
lightingCapShad <-
makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
lightingLineShadowShad <-
+3 -2
View File
@@ -173,11 +173,12 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
glUseProgram (_shaderUINT lwallShad)
glUniform3f 0 x y z
glUniform1f 1 rad
glBindVertexArray $ lwallShad ^. shaderVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
--glBindVertexArray $ lwallShad ^. shaderVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
glBindVertexArray $ pdata ^. dummyVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
glDrawArrays
(_unPrimitiveMode $ _shaderPrimitive lwallShad)
0
nWalls
(nWalls * 18)
case shadrendertype of
GeoObjShads -> do
--draw silhouette shadows