Refactor shader types
This commit is contained in:
+34
-35
@@ -22,7 +22,6 @@ import Graphics.GL.Core45
|
||||
import Picture.Data
|
||||
import Shader
|
||||
import Shader.Data
|
||||
import Shader.ExtraPrimitive
|
||||
|
||||
{- | Determine where light is shining in the world.
|
||||
think of the produced texture as showing what RGB values should be "taken
|
||||
@@ -89,12 +88,12 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype
|
||||
glBindTextureUnit 0 (positiontexture ^. unTO)
|
||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||
glStencilFunc GL_EQUAL 0 255
|
||||
glUseProgram (ltextShad ^. shadName)
|
||||
glUseProgram (ltextShad ^. shaderUINT)
|
||||
glUniform3f 0 x y z
|
||||
glUniform4f 1 r g b rad
|
||||
glBindVertexArray $ ltextShad ^. shadVAO . vaoName
|
||||
glBindVertexArray $ ltextShad ^. shaderVAO . vaoName
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode (_shadPrim' ltextShad))
|
||||
(_unPrimitiveMode (_shaderPrimitive ltextShad))
|
||||
0
|
||||
(fromIntegral (4 :: Int))
|
||||
--cleanup: may not be necessary, depending on what comes after...
|
||||
@@ -153,24 +152,24 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype
|
||||
glDisable GL_CULL_FACE
|
||||
glStencilFunc GL_ALWAYS 0 255
|
||||
--draw wall shadows
|
||||
glUseProgram (_shadName lwallShad)
|
||||
glUseProgram (_shaderUINT lwallShad)
|
||||
glUniform3f 0 x y z
|
||||
glUniform1f 1 rad
|
||||
glBindVertexArray $ lwallShad ^. shadVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
|
||||
glBindVertexArray $ lwallShad ^. shaderVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode $ _shadPrim' lwallShad)
|
||||
(_unPrimitiveMode $ _shaderPrimitive lwallShad)
|
||||
0
|
||||
(fromIntegral nWalls)
|
||||
case shadsdrawtype of
|
||||
GeoObjShads -> do
|
||||
--draw silhouette shadows
|
||||
glEnable GL_DEPTH_CLAMP
|
||||
glUseProgram (_shadName llinesShad)
|
||||
glUseProgram (_shaderUINT llinesShad)
|
||||
glUniform3f 0 x y z
|
||||
glUniform1f 1 rad
|
||||
glBindVertexArray (_vaoName $ _shadVAO llinesShad)
|
||||
glBindVertexArray (_vaoName $ _shaderVAO llinesShad)
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim' llinesShad)
|
||||
(_unPrimitiveMode $ _shaderPrimitive llinesShad)
|
||||
(fromIntegral nSils)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
@@ -178,11 +177,11 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype
|
||||
glEnable GL_CULL_FACE
|
||||
glCullFace GL_BACK
|
||||
glCullFace GL_FRONT
|
||||
glUseProgram (_shadName lcapShad)
|
||||
glUseProgram (_shaderUINT lcapShad)
|
||||
glUniform3f 0 x y z
|
||||
glBindVertexArray $ lcapShad ^. shadVAO . vaoName --Just (_vao $ _shadVAO lcapShad)
|
||||
glBindVertexArray $ lcapShad ^. shaderVAO . vaoName --Just (_vao $ _shadVAO lcapShad)
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim' lcapShad)
|
||||
(_unPrimitiveMode $ _shaderPrimitive lcapShad)
|
||||
(fromIntegral nCaps)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
@@ -196,12 +195,12 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype
|
||||
glBindTextureUnit 1 (normaltexture ^. unTO)
|
||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||
glStencilFunc GL_EQUAL 0 255
|
||||
glUseProgram (ltextShad ^. shadName) --Just (_shadProg ltextShad)
|
||||
glUseProgram (ltextShad ^. shaderUINT) --Just (_shadProg ltextShad)
|
||||
glUniform3f 0 x y z
|
||||
glUniform4f 1 r g b rad
|
||||
glBindVertexArray $ ltextShad ^. shadVAO . vaoName -- Just (_vao $ _shadVAO ltextShad)
|
||||
glBindVertexArray $ ltextShad ^. shaderVAO . vaoName -- Just (_vao $ _shadVAO ltextShad)
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode (_shadPrim' ltextShad))
|
||||
(_unPrimitiveMode (_shaderPrimitive ltextShad))
|
||||
0
|
||||
(fromIntegral (4 :: Int))
|
||||
--cleanup: may not be necessary, depending on what comes after...
|
||||
@@ -274,17 +273,17 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
glDisable GL_CULL_FACE
|
||||
glStencilFunc GL_ALWAYS 0 255
|
||||
--draw wall shadows
|
||||
glUseProgram $ pdata ^. shadowWallShader . shadName
|
||||
glBindVertexArray $ pdata ^. shadowWallShader . shadVAO . vaoName
|
||||
glUseProgram $ pdata ^. shadowWallShader . shaderUINT
|
||||
glBindVertexArray $ pdata ^. shadowWallShader . shaderVAO . vaoName
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode $ pdata ^. shadowWallShader . shadPrim')
|
||||
(_unPrimitiveMode $ pdata ^. shadowWallShader . shaderPrimitive)
|
||||
0
|
||||
(fromIntegral nWalls)
|
||||
--draw silhouette shadows
|
||||
glUseProgram $ pdata ^. shadowEdgeShader . shadName
|
||||
glBindVertexArray $ pdata ^. shadowEdgeShader . shadVAO . vaoName
|
||||
glUseProgram $ pdata ^. shadowEdgeShader . shaderUINT
|
||||
glBindVertexArray $ pdata ^. shadowEdgeShader . shaderVAO . vaoName
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ pdata ^. shadowEdgeShader . shadPrim')
|
||||
(_unPrimitiveMode $ pdata ^. shadowEdgeShader . shaderPrimitive)
|
||||
(fromIntegral nSils)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
@@ -292,10 +291,10 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
glEnable GL_CULL_FACE
|
||||
glCullFace GL_BACK
|
||||
--glCullFace GL_FRONT
|
||||
glUseProgram (_shadName lcapShad)
|
||||
glBindVertexArray $ lcapShad ^. shadVAO . vaoName
|
||||
glUseProgram (_shaderUINT lcapShad)
|
||||
glBindVertexArray $ lcapShad ^. shaderVAO . vaoName
|
||||
glDrawElements
|
||||
(marshalEPrimitiveMode $ _shadPrim' lcapShad)
|
||||
(_unPrimitiveMode $ _shaderPrimitive lcapShad)
|
||||
(fromIntegral nCaps)
|
||||
GL_UNSIGNED_SHORT
|
||||
nullPtr
|
||||
@@ -303,12 +302,12 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
glDepthFunc GL_ALWAYS
|
||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||
glStencilFunc GL_EQUAL 0 255
|
||||
glUseProgram (pdata ^. shadowLightShader . _1 . shadName)
|
||||
glUseProgram (pdata ^. shadowLightShader . _1 . shaderUINT)
|
||||
-- bind world position texture
|
||||
bindTO toPos
|
||||
-- glBindVertexArray $ pdata ^. shadowLightShader . shadVAO' . vaoName
|
||||
-- glBindVertexArray $ pdata ^. shadowLightShader . shaderVAO' . vaoName
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode $ pdata ^. shadowLightShader . _1 . shadPrim')
|
||||
(_unPrimitiveMode $ pdata ^. shadowLightShader . _1 . shaderPrimitive)
|
||||
0
|
||||
1
|
||||
glDisable GL_CULL_FACE
|
||||
@@ -323,9 +322,9 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
glBindTexture GL_TEXTURE_2D_ARRAY (pdata ^. fboShadow . _2 . _1 . unTO)
|
||||
glEnable GL_BLEND
|
||||
glBlendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
|
||||
glUseProgram (pdata ^. shadowCombineShader . _1 . shadName)
|
||||
glUseProgram (pdata ^. shadowCombineShader . _1 . shaderUINT)
|
||||
glDrawArrays
|
||||
(marshalEPrimitiveMode EPoints)
|
||||
GL_POINTS
|
||||
0
|
||||
1
|
||||
withArray [GL_COLOR_ATTACHMENT0, GL_DEPTH_STENCIL_ATTACHMENT] $ \ptr ->
|
||||
@@ -338,22 +337,22 @@ instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos = do
|
||||
pingPongBetween ::
|
||||
(FBO, TO) ->
|
||||
(FBO, TO) ->
|
||||
FullShader ->
|
||||
Shader ->
|
||||
IO ()
|
||||
pingPongBetween (fb1, to1) (fb2, to2) fs = do
|
||||
--bindFramebuffer Framebuffer $= fb2
|
||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO fb2)
|
||||
--textureBinding Texture2D $= Just to1
|
||||
glBindTexture GL_TEXTURE_2D (_unTO to1)
|
||||
drawFullShader fs 4
|
||||
drawShader fs 4
|
||||
--bindFramebuffer Framebuffer $= fb1
|
||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO fb1)
|
||||
--textureBinding Texture2D $= Just to2
|
||||
glBindTexture GL_TEXTURE_2D (_unTO to2)
|
||||
drawFullShader fs 4
|
||||
drawShader fs 4
|
||||
|
||||
renderFoldable ::
|
||||
MV.MVector (PrimState IO) (FullShader,VBO) ->
|
||||
MV.MVector (PrimState IO) (Shader,VBO) ->
|
||||
Picture ->
|
||||
IO ()
|
||||
renderFoldable shadV struct = do
|
||||
@@ -364,7 +363,7 @@ renderFoldable shadV struct = do
|
||||
------------------------------end renderFoldable
|
||||
renderLayer ::
|
||||
Layer ->
|
||||
MV.MVector (PrimState IO) (FullShader,VBO) ->
|
||||
MV.MVector (PrimState IO) (Shader,VBO) ->
|
||||
UMV.MVector (PrimState IO) Int ->
|
||||
IO ()
|
||||
renderLayer layer shads counts = do
|
||||
|
||||
Reference in New Issue
Block a user