Tweak window rendering
This commit is contained in:
@@ -18,6 +18,7 @@ data RenderData = RenderData
|
||||
, _lightingLineShadowShader :: FullShader
|
||||
, _lightingCapShader :: FullShader
|
||||
, _wallBlankShader :: FullShader
|
||||
, _windowShader :: FullShader
|
||||
, _wallTextureShader :: FullShader
|
||||
, _textureArrayShader :: FullShader
|
||||
, _fullscreenShader :: FullShader
|
||||
|
||||
+8
-8
@@ -139,7 +139,7 @@ doDrawing pdata w = do
|
||||
drawBuffers $= [FBOColorAttachment 0,NoBuffers]
|
||||
clear [ColorBuffer]
|
||||
renderLayer 2 shadV layerCounts
|
||||
--renderWindows pdata windowPoints
|
||||
renderWindows pdata windowPoints
|
||||
|
||||
----render transparency depths
|
||||
depthMask $= Enabled
|
||||
@@ -148,7 +148,7 @@ doDrawing pdata w = do
|
||||
clearColor $= Color4 0 0 0 0
|
||||
clear [ColorBuffer]
|
||||
renderLayer 2 shadV layerCounts
|
||||
--renderWindows pdata windowPoints
|
||||
renderWindows pdata windowPoints
|
||||
depthMask $= Disabled
|
||||
blend $= Enabled
|
||||
|
||||
@@ -244,12 +244,12 @@ renderWindows
|
||||
-> [((Point2,Point2),Point4)] -- ^ List: wall positions and color
|
||||
-> IO ()
|
||||
renderWindows pdata wps = do
|
||||
n <- poke224s (shadVBOptr $ _wallBlankShader pdata) wps
|
||||
bindShaderBuffers [_wallBlankShader pdata] [n]
|
||||
currentProgram $= Just (_shaderProgram $ _wallBlankShader pdata)
|
||||
cullFace $= Just Back
|
||||
drawShader (_wallBlankShader pdata) n
|
||||
cullFace $= Nothing
|
||||
n <- poke224s (shadVBOptr $ _windowShader pdata) wps
|
||||
bindShaderBuffers [_windowShader pdata] [n]
|
||||
currentProgram $= Just (_shaderProgram $ _windowShader pdata)
|
||||
--cullFace $= Just Back
|
||||
drawShader (_windowShader pdata) n
|
||||
--cullFace $= Nothing
|
||||
|
||||
renderTextureWalls
|
||||
:: RenderData
|
||||
|
||||
+1
-1
@@ -184,7 +184,7 @@ updateCloud w c
|
||||
& clTimer -~ 1
|
||||
)
|
||||
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
|
||||
vertVel = _clAlt c - opz
|
||||
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)
|
||||
prot2 p' = p' +.+ rotateV (negate $ fromIntegral time) (V2 0 1)
|
||||
prot3 p' = p' +.+ rotateV (2 + fromIntegral time * 0.1) (V2 0 2)
|
||||
|
||||
{- TODO: add generalised area damage particles/hiteffects. -}
|
||||
moveFlame
|
||||
:: Point2 -- ^ Rotation direction
|
||||
@@ -132,7 +131,7 @@ moveFlame rotd w pt
|
||||
pOut p = p +.+ safeNormalizeV (sp -.- p)
|
||||
reflV wall = (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) 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)
|
||||
|
||||
makeFlameletTimed
|
||||
|
||||
@@ -51,6 +51,21 @@ preloadRender = do
|
||||
setupVertexAttribPointer 1 4 8 4
|
||||
let wpVAO = VAO {_vao = wpVAOname, _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
|
||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints
|
||||
>>= addUniforms ["lightPos"]
|
||||
@@ -142,6 +157,7 @@ preloadRender = do
|
||||
--, _lightingWallShader = wlLightShad {_shaderVAO = wpVAO}
|
||||
, _wallBlankShader = wlBlank { _shaderVAO = wpColVAO }
|
||||
, _wallTextureShader = wlTexture { _shaderVAO = wpColVAO }
|
||||
, _windowShader = wlBlank { _shaderVAO = winColVAO }
|
||||
, _textureArrayShader = textArrayShad
|
||||
, _fullscreenShader = fsShad
|
||||
, _fullLightingShader = fullLightingShad
|
||||
|
||||
Reference in New Issue
Block a user