Share wall points in buffer, part 1

This commit is contained in:
2021-07-11 15:17:40 +02:00
parent 5e21a6527d
commit 37d3e0ce63
3 changed files with 26 additions and 5 deletions
+4 -1
View File
@@ -30,8 +30,11 @@ preloadRender = do
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints pokeWPStrat wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints pokeWPStrat
>>= addUniforms ["lightPos"] >>= addUniforms ["lightPos"]
wlLightShad wlLightShad
<- makeShader "lighting/wall" [vert,geom,frag] [4] EPoints pokeWPStrat <- makeShaderUsingShaderVAO "lighting/wall" [vert,geom,frag] EPoints wsShad
>>= addUniforms ["lightPos","radLum"] >>= addUniforms ["lightPos","radLum"]
-- wlLightShad
-- <- makeShader "lighting/wall" [vert,geom,frag] [4] EPoints pokeWPStrat
-- >>= addUniforms ["lightPos","radLum"]
lightingSurfaceShad lightingSurfaceShad
<- makeShader "lighting/surface" [vert,frag] [3] ETriangles poke3 <- makeShader "lighting/surface" [vert,frag] [3] ETriangles poke3
>>= addUniforms ["lightPos","radLum"] >>= addUniforms ["lightPos","radLum"]
+6 -4
View File
@@ -69,8 +69,8 @@ createLightMap pdata resDiv wallPoints lightPoints fpics scPol = do
viewport $= (vppos, vsize) viewport $= (vppos, vsize)
textureBinding Texture2D $= Just (snd $ _fboLighting pdata) textureBinding Texture2D $= Just (snd $ _fboLighting pdata)
-- store wall and light positions into buffer -- store wall and light positions into buffer
nWallLights <- F.foldM (pokeShader $ _lightingWallShader pdata) (map Render22 wallPoints) -- nWallLights <- F.foldM (pokeShader $ _lightingWallShader pdata) (map Render22 wallPoints)
bindShaderBuffers [_lightingWallShader pdata] [nWallLights] -- bindShaderBuffers [_lightingWallShader pdata] [nWallLights]
nWalls <- F.foldM (pokeShader $ _lightingOccludeShader pdata) (map Render22 wallPoints) nWalls <- F.foldM (pokeShader $ _lightingOccludeShader pdata) (map Render22 wallPoints)
bindShaderBuffers [_lightingOccludeShader pdata] [nWalls] bindShaderBuffers [_lightingOccludeShader pdata] [nWalls]
-- store foreground silhouette geometry into buffer -- store foreground silhouette geometry into buffer
@@ -89,7 +89,8 @@ createLightMap pdata resDiv wallPoints lightPoints fpics scPol = do
cullFace $= Just Back cullFace $= Just Back
-- draw walls from your point of view in order to set z buffer -- draw walls from your point of view in order to set z buffer
currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata) currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata)
drawShader (_lightingWallShader pdata) nWallLights --drawShader (_lightingWallShader pdata) nWallLights
drawShader (_lightingWallShader pdata) nWalls
--colorMask $= Color4 Disabled Disabled Disabled Disabled --colorMask $= Color4 Disabled Disabled Disabled Disabled
--currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata) --currentProgram $= Just (_shaderProgram $ _lightingOccludeShader pdata)
--uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata) --uniform (head $ _shaderCustomUnis $ _lightingOccludeShader pdata)
@@ -151,7 +152,8 @@ createLightMap pdata resDiv wallPoints lightPoints fpics scPol = do
$= Vector3 x y z $= Vector3 x y z
uniform (_shaderCustomUnis (_lightingWallShader pdata) !! 1) uniform (_shaderCustomUnis (_lightingWallShader pdata) !! 1)
$= Vector2 r lum $= Vector2 r lum
drawShader (_lightingWallShader pdata) nWallLights --drawShader (_lightingWallShader pdata) nWallLights
drawShader (_lightingWallShader pdata) nWalls
cullFace $= Nothing cullFace $= Nothing
stencilTest $= Disabled stencilTest $= Disabled
blend $= Disabled blend $= Disabled
+16
View File
@@ -1,5 +1,6 @@
module Shader.Compile module Shader.Compile
( makeShader ( makeShader
, makeShaderUsingShaderVAO
, makeSourcedShader , makeSourcedShader
, setupVAO , setupVAO
) where ) where
@@ -13,6 +14,21 @@ import Control.Monad
--import Control.Lens --import Control.Lens
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight) import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
-- | Takes the VAO and poke strategy from another shader
makeShaderUsingShaderVAO
:: String -- ^ First part of the name of the shader
-> [ShaderType] -- ^ Filetype extensions
-> EPrimitiveMode
-> FullShader
-> IO FullShader
makeShaderUsingShaderVAO s shaderlist pm fs = do
prog <- makeSourcedShader s shaderlist
return $ fs
{_shaderProgram = prog
, _shaderDrawPrimitive = pm
, _shaderTexture = Nothing
, _shaderCustomUnis = []
}
{- | {- |
Compiles a full shader found within the shader directory. Compiles a full shader found within the shader directory.
The shader is made up of files begining with the inputted string with extensions .vert, .geom etc. The shader is made up of files begining with the inputted string with extensions .vert, .geom etc.