Initial working prototype of general lighting surfaces

This commit is contained in:
2021-06-25 03:01:18 +02:00
parent b252c52ffe
commit 06a92e70ee
2 changed files with 19 additions and 3 deletions
+18 -2
View File
@@ -100,6 +100,15 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) _ = do
-- bind buffer for floor light circle -- bind buffer for floor light circle
let lightPtr = _vboPointer $ _vaoVBO $ _shaderVAO $ _lightingFloorShader pdata let lightPtr = _vboPointer $ _vaoVBO $ _shaderVAO $ _lightingFloorShader pdata
pokeFourOff lightPtr 0 (x,y,r,lum) pokeFourOff lightPtr 0 (x,y,r,lum)
bindShaderBuffers [_lightingFloorShader pdata] [1]
nsurfVs <- F.foldM (pokeShader (_lightingSurfaceShader pdata)) [Render3
[(0,0,0.1)
,(500,0,0.1)
,(-500,500,0.1)
] ]
bindShaderBuffers [_lightingSurfaceShader pdata] [nsurfVs]
-- stencil out walls -- stencil out walls
colorMask $= Color4 Disabled Disabled Disabled Disabled colorMask $= Color4 Disabled Disabled Disabled Disabled
clear [StencilBuffer] clear [StencilBuffer]
@@ -116,9 +125,16 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) _ = do
-- draw floor light circles -- draw floor light circles
cullFace $= Nothing cullFace $= Nothing
colorMask $= Color4 Disabled Disabled Disabled Enabled colorMask $= Color4 Disabled Disabled Disabled Enabled
bindShaderBuffers [_lightingFloorShader pdata] [1]
stencilFunc $= (Equal, 0, 255) stencilFunc $= (Equal, 0, 255)
drawShader (_lightingFloorShader pdata) 1 -- drawShader (_lightingFloorShader pdata) 1
-- draw floor surface
currentProgram $= Just (_shaderProgram $ _lightingSurfaceShader pdata)
uniform (head $ _shaderCustomUnis $ _lightingSurfaceShader pdata)
$= Vector3 x y z
uniform (_shaderCustomUnis (_lightingSurfaceShader pdata) !! 1)
$= Vector2 r lum
drawShader (_lightingSurfaceShader pdata) nWallLights
-- draw wall light "circles" -- draw wall light "circles"
currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata) currentProgram $= Just (_shaderProgram $ _lightingWallShader pdata)
uniform (head $ _shaderCustomUnis $ _lightingWallShader pdata) uniform (head $ _shaderCustomUnis $ _lightingWallShader pdata)
+1 -1
View File
@@ -34,7 +34,7 @@ preloadRender = do
<- makeShader "lighting/wall" [vert,geom,frag] [4] Points pokeWPStrat <- makeShader "lighting/wall" [vert,geom,frag] [4] Points pokeWPStrat
>>= addUniforms ["lightPos","radLum"] >>= addUniforms ["lightPos","radLum"]
lightingSurfaceShad lightingSurfaceShad
<- makeShader "lighting/surface" [vert,frag] [3] Points poke3 <- makeShader "lighting/surface" [vert,frag] [3] Triangles poke3
>>= addUniforms ["lightPos","radLum"] >>= addUniforms ["lightPos","radLum"]
-- 2D draw shaders -- 2D draw shaders
bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat