Add alternate shadow volume rendering pathway (layered geo)
This commit is contained in:
+10
-10
@@ -149,7 +149,7 @@ preloadRender = do
|
||||
[1] 1
|
||||
EPoints
|
||||
shadowcombineshader <- makeShaderSized "shadow/combine" [vert,geom,frag] [1] 1 EPoints
|
||||
pokeArray (shadVBOptr' shadowlightshader) $ concat cornerListForTriangles
|
||||
poke (shadVBOptr' shadowlightshader) 1
|
||||
|
||||
-- positional shader
|
||||
positionalBlankShad <- makeShader "positional/blank" [vert, frag] [3] ETriangles
|
||||
@@ -291,15 +291,15 @@ cornerList =
|
||||
, [1, 1, 1, 1]
|
||||
, [1, -1, 1, 0]
|
||||
]
|
||||
cornerListForTriangles :: [[Float]]
|
||||
cornerListForTriangles =
|
||||
[ [-1, 1, 0, 1]
|
||||
, [-1, -1, 0, 0]
|
||||
, [1, 1, 1, 1]
|
||||
, [-1, -1, 0, 0]
|
||||
, [1, 1, 1, 1]
|
||||
, [1, -1, 1, 0]
|
||||
]
|
||||
--cornerListForTriangles :: [[Float]]
|
||||
--cornerListForTriangles =
|
||||
-- [ [-1, 1, 0, 1]
|
||||
-- , [-1, -1, 0, 0]
|
||||
-- , [1, 1, 1, 1]
|
||||
-- , [-1, -1, 0, 0]
|
||||
-- , [1, 1, 1, 1]
|
||||
-- , [1, -1, 1, 0]
|
||||
-- ]
|
||||
|
||||
cleanUpRenderPreload :: RenderData -> IO ()
|
||||
cleanUpRenderPreload pd = do
|
||||
|
||||
+16
-19
@@ -199,36 +199,33 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
--draw wall shadows
|
||||
glUseProgram (_shadProg' lwallShad)
|
||||
glBindVertexArray $ lwallShad ^. shadVAO' . vaoName -- Just (_vao $ _shadVAO lwallShad)
|
||||
-- glDrawArrays
|
||||
-- (marshalEPrimitiveMode $ _shadPrim' lwallShad)
|
||||
-- 0
|
||||
-- (fromIntegral nWalls)
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode $ _shadPrim' lwallShad)
|
||||
0
|
||||
(fromIntegral nWalls)
|
||||
--draw silhouette shadows
|
||||
glUseProgram (_shadProg' llinesShad)
|
||||
glBindVertexArray (_vaoName $ _shadVAO' llinesShad)
|
||||
-- glDrawElements
|
||||
-- (marshalEPrimitiveMode $ _shadPrim' llinesShad)
|
||||
-- (fromIntegral nSils)
|
||||
-- GL_UNSIGNED_SHORT
|
||||
-- nullPtr
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim' llinesShad)
|
||||
(fromIntegral nSils)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
--draw caps on the near plane as required
|
||||
glEnable GL_CULL_FACE
|
||||
glCullFace GL_BACK
|
||||
glUseProgram (_shadProg' lcapShad)
|
||||
glBindVertexArray $ lcapShad ^. shadVAO' . vaoName --Just (_vao $ _shadVAO lcapShad)
|
||||
-- glDrawElements
|
||||
-- (marshalEPrimitiveMode $ _shadPrim' lcapShad)
|
||||
-- (fromIntegral nCaps)
|
||||
-- GL_UNSIGNED_SHORT
|
||||
-- nullPtr
|
||||
-- --draw lightmap itself
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim' lcapShad)
|
||||
(fromIntegral nCaps)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
--draw lightmap itself
|
||||
glEnable GL_DEPTH_TEST
|
||||
glDepthFunc GL_ALWAYS
|
||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||
glStencilFunc GL_EQUAL 0 255
|
||||
-- delete vvvv
|
||||
glDisable GL_STENCIL_TEST
|
||||
-- delete ^^^^
|
||||
glUseProgram (pdata ^. shadowLightShader . shadProg')
|
||||
-- bind world position texture
|
||||
bindTO toPos
|
||||
@@ -237,7 +234,7 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode $ pdata ^. shadowLightShader . shadPrim')
|
||||
0
|
||||
(fromIntegral (4 :: Int))
|
||||
1
|
||||
|
||||
-- this was the end of the loop
|
||||
glDisable GL_CULL_FACE
|
||||
|
||||
Reference in New Issue
Block a user