Implement textured walls

This commit is contained in:
jgk
2021-03-21 20:09:11 +01:00
parent 23fbee3374
commit e6c76da6b3
4 changed files with 25 additions and 6 deletions
+2 -2
View File
@@ -25,8 +25,8 @@ if (isLHS (p1.xy - lightPos, p2.xy - lightPos) < 0)
lum = radLum.y;
float rad = radLum.x;
vec4 p3 = vec4 (p1.xy,-0.2,1);
vec4 p4 = vec4 (p2.xy,-0.2,1);
vec4 p3 = vec4 (p1.xy,-0.5,1);
vec4 p4 = vec4 (p2.xy,-0.5,1);
vec2 d1 = p1.xy - lightPos;
vec2 d2 = p2.xy - lightPos;
+1 -1
View File
@@ -66,7 +66,7 @@ worldPictures w
, ptPicts
, ptPicts'
, afterPtPicts'
, wlPicts'
-- , wlPicts'
, wlPicts
, smokeShadows
, ppLabels
+1 -1
View File
@@ -69,7 +69,7 @@ preloadRender = do
-- wallShader
wlShad <- makeShader "wallFace" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
>>= addTexture "data/texture/smudgedDirt.png"
>>= addTexture "data/texture/grayscaleDirt.png"
>>= addUniforms ["perpMat"]
-- framebuffer for lighting
+21 -2
View File
@@ -60,15 +60,34 @@ renderPicture' pdata rot zoom trans@(tranx,trany) wins@(winx,winy) wallPointsCol
createLightMap pdata rot zoom trans wins wallPoints lightPoints viewFroms pmat
ticksAfterLighting <- SDL.ticks
renderBackground pdata rot zoom trans wins
depthFunc $= Just Lequal
renderFoldable pdata $ picToLTree (Just 0) pic
renderWalls pdata wallPointsCol pmat
renderPicture pdata pic
-- reset blend so that light map doesn't apply
blendFunc $= (SrcAlpha,OneMinusSrcAlpha)
renderFoldable pdata $ picToLTree (Just 1) pic
-- set drawing for on top
blendFuncSeparate $= ((SrcAlphaSaturate, OneMinusSrcAlpha), (Zero,One))
renderFoldable pdata $ picToLTree (Just 2) pic
resetShaderUniforms (map extractProgAndUnis $ _listShaders pdata)
endTicks <- SDL.ticks
return (ticksAfterLighting, endTicks - startTicks)
renderWalls :: RenderData -> [((Point2,Point2),Point4)] -> GLmatrix GLfloat -> IO ()
renderWalls pdata wps pmat = do
n <- F.foldM (pokeShader $ _wallFaceShader pdata) wps
return ()
bindShaderBuffers [_wallFaceShader pdata] [n]
currentProgram $= Just (_shaderProgram $ _wallFaceShader pdata)
uniform ( (fromJust $ _shaderCustomUnis $ _wallFaceShader pdata) !! 0)
$= pmat
drawShader (_wallFaceShader pdata) n
createLightMap :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) ->
[(Point2,Point2)] -> [Point4] ->