Tweak window rendering
This commit is contained in:
@@ -18,6 +18,7 @@ data RenderData = RenderData
|
|||||||
, _lightingLineShadowShader :: FullShader
|
, _lightingLineShadowShader :: FullShader
|
||||||
, _lightingCapShader :: FullShader
|
, _lightingCapShader :: FullShader
|
||||||
, _wallBlankShader :: FullShader
|
, _wallBlankShader :: FullShader
|
||||||
|
, _windowShader :: FullShader
|
||||||
, _wallTextureShader :: FullShader
|
, _wallTextureShader :: FullShader
|
||||||
, _textureArrayShader :: FullShader
|
, _textureArrayShader :: FullShader
|
||||||
, _fullscreenShader :: FullShader
|
, _fullscreenShader :: FullShader
|
||||||
|
|||||||
+8
-8
@@ -139,7 +139,7 @@ doDrawing pdata w = do
|
|||||||
drawBuffers $= [FBOColorAttachment 0,NoBuffers]
|
drawBuffers $= [FBOColorAttachment 0,NoBuffers]
|
||||||
clear [ColorBuffer]
|
clear [ColorBuffer]
|
||||||
renderLayer 2 shadV layerCounts
|
renderLayer 2 shadV layerCounts
|
||||||
--renderWindows pdata windowPoints
|
renderWindows pdata windowPoints
|
||||||
|
|
||||||
----render transparency depths
|
----render transparency depths
|
||||||
depthMask $= Enabled
|
depthMask $= Enabled
|
||||||
@@ -148,7 +148,7 @@ doDrawing pdata w = do
|
|||||||
clearColor $= Color4 0 0 0 0
|
clearColor $= Color4 0 0 0 0
|
||||||
clear [ColorBuffer]
|
clear [ColorBuffer]
|
||||||
renderLayer 2 shadV layerCounts
|
renderLayer 2 shadV layerCounts
|
||||||
--renderWindows pdata windowPoints
|
renderWindows pdata windowPoints
|
||||||
depthMask $= Disabled
|
depthMask $= Disabled
|
||||||
blend $= Enabled
|
blend $= Enabled
|
||||||
|
|
||||||
@@ -244,12 +244,12 @@ renderWindows
|
|||||||
-> [((Point2,Point2),Point4)] -- ^ List: wall positions and color
|
-> [((Point2,Point2),Point4)] -- ^ List: wall positions and color
|
||||||
-> IO ()
|
-> IO ()
|
||||||
renderWindows pdata wps = do
|
renderWindows pdata wps = do
|
||||||
n <- poke224s (shadVBOptr $ _wallBlankShader pdata) wps
|
n <- poke224s (shadVBOptr $ _windowShader pdata) wps
|
||||||
bindShaderBuffers [_wallBlankShader pdata] [n]
|
bindShaderBuffers [_windowShader pdata] [n]
|
||||||
currentProgram $= Just (_shaderProgram $ _wallBlankShader pdata)
|
currentProgram $= Just (_shaderProgram $ _windowShader pdata)
|
||||||
cullFace $= Just Back
|
--cullFace $= Just Back
|
||||||
drawShader (_wallBlankShader pdata) n
|
drawShader (_windowShader pdata) n
|
||||||
cullFace $= Nothing
|
--cullFace $= Nothing
|
||||||
|
|
||||||
renderTextureWalls
|
renderTextureWalls
|
||||||
:: RenderData
|
:: RenderData
|
||||||
|
|||||||
+1
-1
@@ -184,7 +184,7 @@ updateCloud w c
|
|||||||
& clTimer -~ 1
|
& clTimer -~ 1
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
newVel@(V3 _ _ nvz) = (0.95 *.*.* springVels) +.+.+ (V3 0 0 (0.01 * vertVel))
|
newVel@(V3 _ _ nvz) = (0.95 *.*.* springVels) +.+.+ (V3 0 0 (0.001 * vertVel))
|
||||||
newVel2 = stripZ newVel
|
newVel2 = stripZ newVel
|
||||||
vertVel = _clAlt c - opz
|
vertVel = _clAlt c - opz
|
||||||
springVels = foldl' (clClSpringVel c) (_clVel c) (cloudsNearPoint oldPos2 w)
|
springVels = foldl' (clClSpringVel c) (_clVel c) (cloudsNearPoint oldPos2 w)
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ drawFlame rotd pt = thePic
|
|||||||
prot p' = p' +.+ rotateV (fromIntegral time) (V2 0 1)
|
prot p' = p' +.+ rotateV (fromIntegral time) (V2 0 1)
|
||||||
prot2 p' = p' +.+ rotateV (negate $ fromIntegral time) (V2 0 1)
|
prot2 p' = p' +.+ rotateV (negate $ fromIntegral time) (V2 0 1)
|
||||||
prot3 p' = p' +.+ rotateV (2 + fromIntegral time * 0.1) (V2 0 2)
|
prot3 p' = p' +.+ rotateV (2 + fromIntegral time * 0.1) (V2 0 2)
|
||||||
|
|
||||||
{- TODO: add generalised area damage particles/hiteffects. -}
|
{- TODO: add generalised area damage particles/hiteffects. -}
|
||||||
moveFlame
|
moveFlame
|
||||||
:: Point2 -- ^ Rotation direction
|
:: Point2 -- ^ Rotation direction
|
||||||
@@ -132,7 +131,7 @@ moveFlame rotd w pt
|
|||||||
pOut p = p +.+ safeNormalizeV (sp -.- p)
|
pOut p = p +.+ safeNormalizeV (sp -.- p)
|
||||||
reflV wall = (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel )
|
reflV wall = (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel )
|
||||||
+.+ (0.2 *.* vel)
|
+.+ (0.2 *.* vel)
|
||||||
smokeCol = fst $ randomR (0.2,0.5) (_randGen w)
|
smokeCol = fst $ randomR (0.5,0.8) (_randGen w)
|
||||||
smokeGen = makeFlamerSmokeAt smokeCol (addZ 20 ep)
|
smokeGen = makeFlamerSmokeAt smokeCol (addZ 20 ep)
|
||||||
|
|
||||||
makeFlameletTimed
|
makeFlameletTimed
|
||||||
|
|||||||
@@ -51,6 +51,21 @@ preloadRender = do
|
|||||||
setupVertexAttribPointer 1 4 8 4
|
setupVertexAttribPointer 1 4 8 4
|
||||||
let wpVAO = VAO {_vao = wpVAOname, _vaoVBO = wpVBO}
|
let wpVAO = VAO {_vao = wpVAOname, _vaoVBO = wpVBO}
|
||||||
wpColVAO = VAO {_vao = wpColVAOname, _vaoVBO = wpVBO}
|
wpColVAO = VAO {_vao = wpColVAOname, _vaoVBO = wpVBO}
|
||||||
|
-- setup window points VBO, VAOs and shaders
|
||||||
|
winVBOname <- genObjectName
|
||||||
|
winVBOptr <- mallocArray (8 * numDrawableWalls)
|
||||||
|
bindBuffer ArrayBuffer $= Just winVBOname
|
||||||
|
bufferData ArrayBuffer $=
|
||||||
|
(fromIntegral $ floatSize * numDrawableWalls * 8
|
||||||
|
, nullPtr
|
||||||
|
, DynamicDraw
|
||||||
|
)
|
||||||
|
let winVBO = VBO {_vbo = winVBOname, _vboPtr = winVBOptr, _vboAttribSizes = [4,4], _vboStride = 8}
|
||||||
|
winColVAOname <- genObjectName
|
||||||
|
bindVertexArrayObject $= Just winColVAOname
|
||||||
|
setupVertexAttribPointer 0 4 8 0
|
||||||
|
setupVertexAttribPointer 1 4 8 4
|
||||||
|
let winColVAO = VAO {_vao = winColVAOname, _vaoVBO = winVBO}
|
||||||
-- lighting shaders
|
-- lighting shaders
|
||||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints
|
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints
|
||||||
>>= addUniforms ["lightPos"]
|
>>= addUniforms ["lightPos"]
|
||||||
@@ -142,6 +157,7 @@ preloadRender = do
|
|||||||
--, _lightingWallShader = wlLightShad {_shaderVAO = wpVAO}
|
--, _lightingWallShader = wlLightShad {_shaderVAO = wpVAO}
|
||||||
, _wallBlankShader = wlBlank { _shaderVAO = wpColVAO }
|
, _wallBlankShader = wlBlank { _shaderVAO = wpColVAO }
|
||||||
, _wallTextureShader = wlTexture { _shaderVAO = wpColVAO }
|
, _wallTextureShader = wlTexture { _shaderVAO = wpColVAO }
|
||||||
|
, _windowShader = wlBlank { _shaderVAO = winColVAO }
|
||||||
, _textureArrayShader = textArrayShad
|
, _textureArrayShader = textArrayShad
|
||||||
, _fullscreenShader = fsShad
|
, _fullscreenShader = fsShad
|
||||||
, _fullLightingShader = fullLightingShad
|
, _fullLightingShader = fullLightingShad
|
||||||
|
|||||||
Reference in New Issue
Block a user