Initial working prototype of general lighting surfaces

This commit is contained in:
jgk
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
let lightPtr = _vboPointer $ _vaoVBO $ _shaderVAO $ _lightingFloorShader pdata
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
colorMask $= Color4 Disabled Disabled Disabled Disabled
clear [StencilBuffer]
@@ -116,9 +125,16 @@ createLightMap pdata resDiv wallPoints lightPoints (viewFromx,viewFromy) _ = do
-- draw floor light circles
cullFace $= Nothing
colorMask $= Color4 Disabled Disabled Disabled Enabled
bindShaderBuffers [_lightingFloorShader pdata] [1]
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"
currentProgram $= Just (_shaderProgram $ _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
>>= addUniforms ["lightPos","radLum"]
lightingSurfaceShad
<- makeShader "lighting/surface" [vert,frag] [3] Points poke3
<- makeShader "lighting/surface" [vert,frag] [3] Triangles poke3
>>= addUniforms ["lightPos","radLum"]
-- 2D draw shaders
bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat