Initial working prototype of general lighting surfaces
This commit is contained in:
+18
-2
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user