Tweak clouds
This commit is contained in:
@@ -11,6 +11,9 @@ void main()
|
|||||||
float d = dot(vControls,vControls);
|
float d = dot(vControls,vControls);
|
||||||
if (d > 1) {discard;}
|
if (d > 1) {discard;}
|
||||||
fCol = vCol;
|
fCol = vCol;
|
||||||
fPos = vec4(vPosID.xy, vPosID.z + (1-d) * vCenterSize.w, 1);
|
fPos = vec4(vPosID.xy, vPosID.z + (1-d) * vCenterSize.w, 0.5);
|
||||||
fNorm = vec4(vCenterSize.xyz - fPos.xyz, 1);
|
vec3 fn1 = (1-d)*vec3(vCenterSize.xyz - fPos.xyz);
|
||||||
|
//vec3 fn1 = vec3(vCenterSize.xyz - fPos.xyz);
|
||||||
|
fNorm = vec4(0.3*fn1.xy,fn1.z, 0.5);
|
||||||
|
//fNorm = vec4(0,0,1, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ data RenderData = RenderData
|
|||||||
, _fboHalf2 :: (FBO, TO)
|
, _fboHalf2 :: (FBO, TO)
|
||||||
, _fboHalf3 :: (FBO, TO)
|
, _fboHalf3 :: (FBO, TO)
|
||||||
, _fboBase :: (FBO, (TO, TO, TO))
|
, _fboBase :: (FBO, (TO, TO, TO))
|
||||||
, _fboCloud :: (FBO, (TO, TO))
|
, _fboCloud :: (FBO, (TO, TO, TO))
|
||||||
, _fboBloom :: (FBO, TO)
|
, _fboBloom :: (FBO, TO)
|
||||||
, _fboPos :: (FBO, TO)
|
, _fboPos :: (FBO, TO)
|
||||||
, _fboLighting :: (FBO, TO)
|
, _fboLighting :: (FBO, TO)
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ data ResFactor = FullRes | HalfRes | QuarterRes
|
|||||||
|
|
||||||
data ObjectShadows = GeoObjShads
|
data ObjectShadows = GeoObjShads
|
||||||
| InstancingShads
|
| InstancingShads
|
||||||
| CPUObjShads
|
|
||||||
| NoObjShads
|
| NoObjShads
|
||||||
| NoShadows
|
| NoShadows
|
||||||
| NoLighting
|
| NoLighting
|
||||||
|
|||||||
@@ -2,8 +2,15 @@ module Dodge.Event.Test (
|
|||||||
testEvent,
|
testEvent,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import Dodge.SoundLogic.ExternallyGeneratedSounds
|
||||||
import Dodge.Data.World
|
import Dodge.Data.World
|
||||||
|
import Control.Lens
|
||||||
|
import Geometry
|
||||||
|
|
||||||
testEvent :: World -> World
|
testEvent :: World -> World
|
||||||
testEvent w = w
|
testEvent w = w
|
||||||
|
& cWorld . lWorld . worldEvents .~ SoundStart BackgroundSound (V2 0 0) foamSprayFadeOutS Nothing :
|
||||||
|
[MakeStartCloudAt (V3 (cx + x) (cy + y) 5) | x <- [-5, -4 .. 5], y <- [-5, -4 .. 5]]
|
||||||
|
where
|
||||||
|
V2 cx cy = w ^?! cWorld . lWorld . creatures . ix 0 . crPos
|
||||||
|
|
||||||
|
|||||||
+53
-32
@@ -132,7 +132,6 @@ doDrawing' win pdata u = do
|
|||||||
GL_DEPTH
|
GL_DEPTH
|
||||||
0
|
0
|
||||||
ptr
|
ptr
|
||||||
|
|
||||||
glDepthFunc GL_LESS
|
glDepthFunc GL_LESS
|
||||||
-- draw wall occlusions from the camera's point of view
|
-- draw wall occlusions from the camera's point of view
|
||||||
glUseProgram (pdata ^. lightingWallShadShader . shadName)
|
glUseProgram (pdata ^. lightingWallShadShader . shadName)
|
||||||
@@ -203,7 +202,7 @@ doDrawing' win pdata u = do
|
|||||||
nIndices
|
nIndices
|
||||||
(u ^. uvConfig . graphics_object_shadows)
|
(u ^. uvConfig . graphics_object_shadows)
|
||||||
(pdata ^. fboBase . _2 . _2)
|
(pdata ^. fboBase . _2 . _2)
|
||||||
(drawCPUShadows pdata ws)
|
(pdata ^. fboBase . _2 . _3)
|
||||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||||
--apply lightmap to base buffer
|
--apply lightmap to base buffer
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||||
@@ -250,36 +249,58 @@ doDrawing' win pdata u = do
|
|||||||
GL_COLOR
|
GL_COLOR
|
||||||
0
|
0
|
||||||
ptr
|
ptr
|
||||||
renderLayer MidLayer shadV layerCounts
|
-- renderLayer MidLayer shadV layerCounts
|
||||||
-- glUseProgram (pdata ^. cloudShader . shaderUINT)
|
glUseProgram (pdata ^. cloudShader . shaderUINT)
|
||||||
-- glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||||
-- glDrawElements
|
glDrawElements
|
||||||
-- (pdata ^. cloudShader . shaderPrimitive)
|
(pdata ^. cloudShader . shaderPrimitive)
|
||||||
-- (fromIntegral nCloudIs)
|
(fromIntegral nCloudIs)
|
||||||
-- GL_UNSIGNED_SHORT
|
GL_UNSIGNED_SHORT
|
||||||
-- nullPtr
|
nullPtr
|
||||||
drawShader (_windowShader pdata) nWins
|
drawShader (_windowShader pdata) nWins
|
||||||
-- when (_graphics_cloud_shadows cfig) $ do
|
when (_graphics_cloud_shadows cfig) $ do
|
||||||
-- ----render transparency depths
|
----render transparency depths
|
||||||
-- glDepthMask GL_TRUE
|
glDepthMask GL_TRUE
|
||||||
-- glDisable GL_BLEND
|
glDepthFunc GL_ALWAYS
|
||||||
-- withArray [GL_NONE, GL_COLOR_ATTACHMENT1] $ \ptr -> glDrawBuffers 2 ptr
|
glDisable GL_BLEND
|
||||||
-- renderLayer MidLayer shadV layerCounts
|
withArray [GL_NONE, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $ \ptr -> glDrawBuffers 3 ptr
|
||||||
-- drawShader (_windowShader pdata) nWins
|
withArray [0,0,0,0] $ \ptr -> glClearNamedFramebufferfv
|
||||||
-- ----draw lightmap for cloud buffer
|
(pdata ^. fboCloud . _1 . unFBO)
|
||||||
-- glDepthMask GL_FALSE
|
GL_COLOR
|
||||||
-- glEnable GL_BLEND
|
1
|
||||||
-- glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboLighting pdata)))
|
ptr
|
||||||
-- createLightMap
|
withArray [0,0,0,0] $ \ptr -> glClearNamedFramebufferfv
|
||||||
-- cfig
|
(pdata ^. fboCloud . _1 . unFBO)
|
||||||
-- pdata
|
GL_COLOR
|
||||||
-- lightPoints
|
2
|
||||||
-- nWalls
|
ptr
|
||||||
-- nSilIndices
|
glEnable GL_BLEND
|
||||||
-- nIndices
|
glBlendColor 0.5 0.5 0.5 0.5
|
||||||
-- (_graphics_object_shadows $ _uvConfig u)
|
glBlendFunci 1 GL_ONE_MINUS_DST_ALPHA GL_DST_ALPHA
|
||||||
-- (snd $ snd $ _fboCloud pdata)
|
glBlendFunci 2 GL_ONE GL_ONE
|
||||||
-- (drawCPUShadows pdata ws)
|
glUseProgram (pdata ^. cloudShader . shaderUINT)
|
||||||
|
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
|
||||||
|
glDrawElements
|
||||||
|
(pdata ^. cloudShader . shaderPrimitive)
|
||||||
|
(fromIntegral nCloudIs)
|
||||||
|
GL_UNSIGNED_SHORT
|
||||||
|
nullPtr
|
||||||
|
drawShader (_windowShader pdata) nWins
|
||||||
|
----draw lightmap for cloud buffer
|
||||||
|
glDepthMask GL_FALSE
|
||||||
|
glDepthFunc GL_LEQUAL
|
||||||
|
glEnable GL_BLEND
|
||||||
|
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboLighting pdata)))
|
||||||
|
createLightMap
|
||||||
|
cfig
|
||||||
|
pdata
|
||||||
|
lightPoints
|
||||||
|
nWalls
|
||||||
|
nSilIndices
|
||||||
|
nIndices
|
||||||
|
(_graphics_object_shadows $ _uvConfig u)
|
||||||
|
(pdata ^. fboCloud . _2 . _2)
|
||||||
|
(pdata ^. fboCloud . _2 . _3)
|
||||||
glInvalidateBufferData (pdata ^. vboShapes . vboName)
|
glInvalidateBufferData (pdata ^. vboShapes . vboName)
|
||||||
--apply lightmap to cloud buffer
|
--apply lightmap to cloud buffer
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboCloud pdata)))
|
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboCloud pdata)))
|
||||||
@@ -300,7 +321,7 @@ doDrawing' win pdata u = do
|
|||||||
drawShader (fst $ _fullscreenShader pdata) 4
|
drawShader (fst $ _fullscreenShader pdata) 4
|
||||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
--draw shadowed clouds onto base buffer
|
--draw shadowed clouds onto base buffer
|
||||||
glBindTexture GL_TEXTURE_2D (_unTO . fst . snd $ _fboCloud pdata)
|
glBindTexture GL_TEXTURE_2D (pdata ^. fboCloud . _2 . _1 . unTO)
|
||||||
drawShader (fst $ _fullscreenShader pdata) 4
|
drawShader (fst $ _fullscreenShader pdata) 4
|
||||||
--set viewport for radial distortion
|
--set viewport for radial distortion
|
||||||
setViewportSize (round winx) (round winy)
|
setViewportSize (round winx) (round winy)
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ makeThinSmokeAt :: Point3 -> World -> World
|
|||||||
makeThinSmokeAt = makeCloudAt (CloudColor 4 400 (withAlpha 0.05 black)) 5 400 50
|
makeThinSmokeAt = makeCloudAt (CloudColor 4 400 (withAlpha 0.05 black)) 5 400 50
|
||||||
|
|
||||||
makeStartCloudAt :: Point3 -> World -> World
|
makeStartCloudAt :: Point3 -> World -> World
|
||||||
makeStartCloudAt = makeCloudAt (CloudColor 2 800 white) 10 400 5
|
--makeStartCloudAt = makeCloudAt (CloudColor 2 800 white) 10 400 5
|
||||||
|
makeStartCloudAt = makeCloudAt (CloudColor 2 800 white) 10 400 50
|
||||||
|
|
||||||
shellTrailCloud :: Point3 -> World -> World
|
shellTrailCloud :: Point3 -> World -> World
|
||||||
shellTrailCloud = makeCloudAt (CloudColor (4 / 3) 800 (greyN 0.5)) 15 400 40
|
shellTrailCloud = makeCloudAt (CloudColor (4 / 3) 800 (greyN 0.5)) 15 400 40
|
||||||
|
|||||||
@@ -30,11 +30,8 @@ sizeFBOs ::
|
|||||||
sizeFBOs xsize ysize xfull yfull rdata = do
|
sizeFBOs xsize ysize xfull yfull rdata = do
|
||||||
resizeRBO (_rboBaseBloom rdata) xsize ysize
|
resizeRBO (_rboBaseBloom rdata) xsize ysize
|
||||||
rdata1 <- updateFBOTO3 xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata fboBase
|
rdata1 <- updateFBOTO3 xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata fboBase
|
||||||
rdata' <-
|
rdata2 <- updateFBOTO3 xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata1 fboCloud
|
||||||
foldM (updateFBOTO2 xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F) rdata1 [fboCloud]
|
rdata' <- updateFBOTO xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 rdata2 fboLighting
|
||||||
>>= flip
|
|
||||||
(foldM (updateFBOTO xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8))
|
|
||||||
[fboLighting]
|
|
||||||
rdata'' <-
|
rdata'' <-
|
||||||
foldM
|
foldM
|
||||||
(updateFBOTO xsize ysize GL_LINEAR_MIPMAP_LINEAR GL_LINEAR GL_RGBA16F)
|
(updateFBOTO xsize ysize GL_LINEAR_MIPMAP_LINEAR GL_LINEAR GL_RGBA16F)
|
||||||
|
|||||||
+8
-15
@@ -76,22 +76,14 @@ preloadRender = do
|
|||||||
let winColVAO = VAO
|
let winColVAO = VAO
|
||||||
{_vaoName = winColVAOname}
|
{_vaoName = winColVAOname}
|
||||||
-- setup shape geometry/cap VBO and two VAOs
|
-- setup shape geometry/cap VBO and two VAOs
|
||||||
shEBOptr <- mallocArray numDrawableElements
|
|
||||||
shEBOname <- mglCreate glCreateBuffers
|
|
||||||
glNamedBufferData
|
|
||||||
shEBOname
|
|
||||||
( fromIntegral $ glushortSize * numDrawableElements)
|
|
||||||
nullPtr
|
|
||||||
GL_STREAM_DRAW
|
|
||||||
let shEBO = EBO{_eboName = shEBOname, _eboPtr = shEBOptr}
|
|
||||||
shVBO <- setupVBO nShapeVerxComp
|
shVBO <- setupVBO nShapeVerxComp
|
||||||
shPosVAOname <- mglCreate glCreateVertexArrays
|
shPosVAOname <- mglCreate glCreateVertexArrays
|
||||||
glBindVertexArray shPosVAOname
|
glBindVertexArray shPosVAOname
|
||||||
glVertexArrayVertexBuffer shPosVAOname 0 (shVBO ^. vboName) 0 (fromIntegral $ floatSize * nShapeVerxComp)
|
glVertexArrayVertexBuffer shPosVAOname 0 (shVBO ^. vboName) 0 (fromIntegral $ floatSize * nShapeVerxComp)
|
||||||
setupVertexAttribPointer shPosVAOname 0 4 0
|
setupVertexAttribPointer shPosVAOname 0 4 0
|
||||||
glVertexArrayElementBuffer shPosVAOname shEBOname
|
|
||||||
let shPosVAO = VAO{_vaoName = shPosVAOname}
|
let shPosVAO = VAO{_vaoName = shPosVAOname}
|
||||||
--setup silhouette edge VAO
|
--setup silhouette edge VAO
|
||||||
|
shEBO' <- setupEBO shPosVAO
|
||||||
shEdgeVAOname <- mglCreate glCreateVertexArrays
|
shEdgeVAOname <- mglCreate glCreateVertexArrays
|
||||||
glBindVertexArray shEdgeVAOname
|
glBindVertexArray shEdgeVAOname
|
||||||
glVertexArrayVertexBuffer shEdgeVAOname 0 (shVBO ^. vboName) 0 (fromIntegral $ floatSize * nShapeVerxComp)
|
glVertexArrayVertexBuffer shEdgeVAOname 0 (shVBO ^. vboName) 0 (fromIntegral $ floatSize * nShapeVerxComp)
|
||||||
@@ -133,7 +125,8 @@ preloadRender = do
|
|||||||
-- 2D draw shaders
|
-- 2D draw shaders
|
||||||
bslist <- makeShader "dualTwoD/basic" [vert, frag] [3, 4] ETriangles
|
bslist <- makeShader "dualTwoD/basic" [vert, frag] [3, 4] ETriangles
|
||||||
bslista <- makeShader4 "shape/basic" [vert, frag] shapeVerxSizes nShapeVerxComp ETriangles shVBO
|
bslista <- makeShader4 "shape/basic" [vert, frag] shapeVerxSizes nShapeVerxComp ETriangles shVBO
|
||||||
glVertexArrayElementBuffer (bslista ^. shadVAO . vaoName) shEBOname
|
glVertexArrayElementBuffer (bslista ^. shadVAO . vaoName) (shEBO' ^. eboName)
|
||||||
|
--glVertexArrayElementBuffer (bslista ^. shadVAO . vaoName) shEBOname
|
||||||
aslist <- makeShader "dualTwoD/arc" [vert, frag] [3, 4, 3] ETriangles
|
aslist <- makeShader "dualTwoD/arc" [vert, frag] [3, 4, 3] ETriangles
|
||||||
eslist <- makeShader "dualTwoD/ellipse" [vert, geom, frag] [3, 4] ETriangles
|
eslist <- makeShader "dualTwoD/ellipse" [vert, geom, frag] [3, 4] ETriangles
|
||||||
bezierQuadShader <- makeShader "dualTwoD/bezierQuad" [vert, frag] [3, 4, 4] ETriangleStrip
|
bezierQuadShader <- makeShader "dualTwoD/bezierQuad" [vert, frag] [3, 4, 4] ETriangleStrip
|
||||||
@@ -172,9 +165,9 @@ preloadRender = do
|
|||||||
|
|
||||||
let cloudverxsizes = [4,4,4,4]
|
let cloudverxsizes = [4,4,4,4]
|
||||||
cloudvbo <- setupVBO (sum cloudverxsizes)
|
cloudvbo <- setupVBO (sum cloudverxsizes)
|
||||||
(cloudshader, cloudebo)
|
(cloudshader, cloudebo)
|
||||||
<- makeShaderEBO "floor/arrayPos" [vert, frag] cloudverxsizes (sum cloudverxsizes)
|
<- makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes (sum cloudverxsizes)
|
||||||
GL_TRIANGLES floorvbo
|
GL_TRIANGLES cloudvbo
|
||||||
-- bind fixed vertex data
|
-- bind fixed vertex data
|
||||||
bufferPokedVBO (snd fsShad) 4
|
bufferPokedVBO (snd fsShad) 4
|
||||||
framebuf2 <- setupTextureFramebuffer 800 600
|
framebuf2 <- setupTextureFramebuffer 800 600
|
||||||
@@ -188,7 +181,7 @@ preloadRender = do
|
|||||||
600
|
600
|
||||||
|
|
||||||
fboBaseName <- setupFramebuffer3GivenStencil rboBaseBloomName
|
fboBaseName <- setupFramebuffer3GivenStencil rboBaseBloomName
|
||||||
fboCloudName <- setupFramebuffer2GivenStencil rboBaseBloomName
|
fboCloudName <- setupFramebuffer3GivenStencil rboBaseBloomName
|
||||||
fboBloomName <- setupFramebufferGivenStencil rboBaseBloomName
|
fboBloomName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||||
fboPosName <- setupFramebufferGivenStencil rboBaseBloomName
|
fboPosName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||||
fboLightingName <- setupFramebufferGivenStencil rboBaseBloomName
|
fboLightingName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||||
@@ -218,7 +211,7 @@ preloadRender = do
|
|||||||
RenderData
|
RenderData
|
||||||
{ _pictureShaders = shadV
|
{ _pictureShaders = shadV
|
||||||
, _shapeShader = bslista -- & shadVAO' .~ shPosColVAO
|
, _shapeShader = bslista -- & shadVAO' .~ shPosColVAO
|
||||||
, _shapeEBO = shEBO
|
, _shapeEBO = shEBO'
|
||||||
, _silhouetteEBO = silEBO
|
, _silhouetteEBO = silEBO
|
||||||
, _lightingCapShader = lightingCapShad
|
, _lightingCapShader = lightingCapShad
|
||||||
, _lightingLineShadowShader = lightingLineShadowShad
|
, _lightingLineShadowShader = lightingLineShadowShad
|
||||||
|
|||||||
+7
-4
@@ -43,9 +43,13 @@ createLightMap ::
|
|||||||
ObjectShadows ->
|
ObjectShadows ->
|
||||||
-- | the texture object giving positions
|
-- | the texture object giving positions
|
||||||
TO ->
|
TO ->
|
||||||
(Point3 -> Float -> IO ()) -> -- attempt at drawing shadow not using geo shader
|
-- | the texture object giving normals
|
||||||
|
TO ->
|
||||||
IO ()
|
IO ()
|
||||||
createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos drawCPUShadows = case shadsdrawtype of
|
createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype
|
||||||
|
toPos
|
||||||
|
normaltexture
|
||||||
|
= case shadsdrawtype of
|
||||||
InstancingShads -> instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos
|
InstancingShads -> instanceLightMap cfig pdata lightPoints nWalls nSils nCaps toPos
|
||||||
NoShadows -> do
|
NoShadows -> do
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboLighting pdata)))
|
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboLighting pdata)))
|
||||||
@@ -183,14 +187,13 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos dra
|
|||||||
GL_UNSIGNED_SHORT
|
GL_UNSIGNED_SHORT
|
||||||
nullPtr
|
nullPtr
|
||||||
glDisable GL_DEPTH_CLAMP
|
glDisable GL_DEPTH_CLAMP
|
||||||
CPUObjShads -> drawCPUShadows (V3 x y z) rad
|
|
||||||
NoObjShads -> return ()
|
NoObjShads -> return ()
|
||||||
--draw lightmap itself
|
--draw lightmap itself
|
||||||
glDepthFunc GL_ALWAYS
|
glDepthFunc GL_ALWAYS
|
||||||
-- bind world position texture
|
-- bind world position texture
|
||||||
glDisable GL_CULL_FACE
|
glDisable GL_CULL_FACE
|
||||||
bindTO toPos
|
bindTO toPos
|
||||||
glBindTextureUnit 1 (pdata ^. fboBase . _2 . _3 . unTO)
|
glBindTextureUnit 1 (normaltexture ^. unTO)
|
||||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||||
glStencilFunc GL_EQUAL 0 255
|
glStencilFunc GL_EQUAL 0 255
|
||||||
glUseProgram (ltextShad ^. shadName) --Just (_shadProg ltextShad)
|
glUseProgram (ltextShad ^. shadName) --Just (_shadProg ltextShad)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ module Shader.Compile (
|
|||||||
makeShaderSized,
|
makeShaderSized,
|
||||||
makeShaderUsingVAO,
|
makeShaderUsingVAO,
|
||||||
setupVAO,
|
setupVAO,
|
||||||
|
setupEBO,
|
||||||
setupVertexAttribPointer,
|
setupVertexAttribPointer,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import Graphics.GL.Core45
|
|||||||
|
|
||||||
pokeCloud :: Ptr Float -> Ptr GLushort -> (Int, Int) -> Cloud -> IO (Int, Int)
|
pokeCloud :: Ptr Float -> Ptr GLushort -> (Int, Int) -> Cloud -> IO (Int, Int)
|
||||||
pokeCloud vptr iptr (nv,ni) cl = do
|
pokeCloud vptr iptr (nv,ni) cl = do
|
||||||
UV.imapM_ (pokeCloudVerx vptr cl nv) $ UV.fromList [(1, 1), (1, -1), (-1, -1), (-1, 1)]
|
UV.imapM_ (pokeCloudVerx vptr cl nv) $ UV.fromList [(1, 1), (-1, 1), (-1, -1), (1, -1)]
|
||||||
UV.imapM_ (pokeCloudIndex iptr nv ni) $ UV.fromList [0, 1, 2, 2, 1, 3]
|
UV.imapM_ (pokeCloudIndex iptr nv ni) $ UV.fromList [0, 1, 2, 2, 0, 3]
|
||||||
return (nv + 4, ni + 6)
|
return (nv + 4, ni + 6)
|
||||||
|
|
||||||
pokeCloudVerx :: Ptr Float -> Cloud -> Int -> Int -> (Float, Float) -> IO ()
|
pokeCloudVerx :: Ptr Float -> Cloud -> Int -> Int -> (Float, Float) -> IO ()
|
||||||
|
|||||||
Reference in New Issue
Block a user