Draw floors using vertex pulling
This commit is contained in:
@@ -4,7 +4,6 @@ in vec2 vPos;
|
|||||||
layout (location=0) out vec4 fCol;
|
layout (location=0) out vec4 fCol;
|
||||||
layout (location=1) out vec4 fPos;
|
layout (location=1) out vec4 fPos;
|
||||||
layout (location=2) out vec4 normal;
|
layout (location=2) out vec4 normal;
|
||||||
//layout (binding=0) uniform sampler2DArray tilesetSampler;
|
|
||||||
layout (binding=40) uniform sampler2DArray diffuseSampler;
|
layout (binding=40) uniform sampler2DArray diffuseSampler;
|
||||||
layout (binding=41) uniform sampler2DArray normalSampler;
|
layout (binding=41) uniform sampler2DArray normalSampler;
|
||||||
vec2 rotateV2 (float a, vec2 v)
|
vec2 rotateV2 (float a, vec2 v)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
#version 450 core
|
#version 450 core
|
||||||
layout (location = 0) in vec4 posXX;
|
struct PosTexRot {vec4 posXX; vec4 texPosRot; };
|
||||||
layout (location = 1) in vec4 texPosRot;
|
|
||||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||||
|
layout (std430, binding = 8) readonly buffer Data { PosTexRot data[]; };
|
||||||
out vec4 vTexPosRot;
|
out vec4 vTexPosRot;
|
||||||
out vec2 vPos;
|
out vec2 vPos;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vPos = posXX.xy;
|
vPos = data[gl_VertexID].posXX.xy;
|
||||||
gl_Position = theMat * vec4(vPos,0,1.0) ;
|
gl_Position = theMat * vec4(vPos,0,1.0) ;
|
||||||
vTexPosRot = texPosRot;
|
vTexPosRot = data[gl_VertexID].texPosRot;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ data RenderData = RenderData
|
|||||||
, _lightUBO :: GLuint -- BufferObject id
|
, _lightUBO :: GLuint -- BufferObject id
|
||||||
, _vboShapes :: VBO
|
, _vboShapes :: VBO
|
||||||
, _floorVBO :: VBO
|
, _floorVBO :: VBO
|
||||||
, _floorShader :: Shader
|
, _floorShader :: GLuint
|
||||||
, _chasmVBO :: VBO
|
, _chasmVBO :: VBO
|
||||||
, _chasmShader :: GLuint
|
, _chasmShader :: GLuint
|
||||||
, _winVBO :: VBO
|
, _winVBO :: VBO
|
||||||
|
|||||||
+2
-6
@@ -155,13 +155,9 @@ doDrawing' win pdata u = do
|
|||||||
glNamedFramebufferDrawBuffers (pdata ^. fboBase . _1 . unFBO) 3
|
glNamedFramebufferDrawBuffers (pdata ^. fboBase . _1 . unFBO) 3
|
||||||
glDepthMask GL_TRUE
|
glDepthMask GL_TRUE
|
||||||
--draw floor onto base buffer
|
--draw floor onto base buffer
|
||||||
glUseProgram (pdata ^. floorShader . shaderUINT)
|
glUseProgram (pdata ^. floorShader)
|
||||||
glBindVertexArray $ pdata ^. floorShader . shaderVAO . vaoName
|
|
||||||
glStencilFunc GL_EQUAL 0 255
|
glStencilFunc GL_EQUAL 0 255
|
||||||
glDrawArrays
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral nFls)
|
||||||
(_unPrimitiveMode $ pdata ^. floorShader . shaderPrimitive)
|
|
||||||
0
|
|
||||||
(fromIntegral nFls)
|
|
||||||
--glDisable GL_STENCIL_TEST
|
--glDisable GL_STENCIL_TEST
|
||||||
glDisable GL_CULL_FACE
|
glDisable GL_CULL_FACE
|
||||||
glEnable GL_BLEND
|
glEnable GL_BLEND
|
||||||
|
|||||||
+11
-7
@@ -1,23 +1,27 @@
|
|||||||
module Dodge.WorldLoad (postUniverseLoadSideEffect) where
|
module Dodge.WorldLoad (postUniverseLoadSideEffect) where
|
||||||
|
|
||||||
import Shader.Parameters
|
|
||||||
import Graphics.GL.Core45
|
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Data.Preload.Render
|
import Data.Preload.Render
|
||||||
import Dodge.Data.Universe
|
import Dodge.Data.Universe
|
||||||
import Shader.Bind
|
import Graphics.GL.Core45
|
||||||
import Shader.Data
|
import Shader.Data
|
||||||
|
import Shader.Parameters
|
||||||
import Shader.Poke.Floor
|
import Shader.Poke.Floor
|
||||||
|
|
||||||
postUniverseLoadSideEffect :: Universe -> Universe
|
postUniverseLoadSideEffect :: Universe -> Universe
|
||||||
postUniverseLoadSideEffect = uvIOEffects %~
|
postUniverseLoadSideEffect =
|
||||||
(\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
|
uvIOEffects
|
||||||
|
%~ (\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
|
||||||
|
|
||||||
postWorldLoad :: RenderData -> CWorld -> IO CWorld
|
postWorldLoad :: RenderData -> CWorld -> IO CWorld
|
||||||
postWorldLoad rdata cw = do
|
postWorldLoad rdata cw = do
|
||||||
nfloorvxs <- foldM (pokeTile (rdata ^. floorVBO . vboPtr)) 0 (cw ^. cwTiles)
|
let floorbo = (rdata ^. floorVBO . vboName)
|
||||||
bufferPokedVBO (rdata ^. floorVBO) nfloorvxs
|
floorptr = (rdata ^. floorVBO . vboPtr)
|
||||||
|
nfloorvxs <- foldM (pokeTile floorptr) 0 (cw ^. cwTiles)
|
||||||
|
glInvalidateBufferData floorbo
|
||||||
|
glNamedBufferStorage floorbo (fromIntegral $ 8 * nfloorvxs * floatSize) floorptr 0
|
||||||
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 8 floorbo
|
||||||
let chbo = rdata ^. chasmVBO . vboName
|
let chbo = rdata ^. chasmVBO . vboName
|
||||||
chptr = rdata ^. chasmVBO . vboPtr
|
chptr = rdata ^. chasmVBO . vboPtr
|
||||||
nchasmvxs <- foldM (pokeChasm chptr) 0 (cw ^. chasms)
|
nchasmvxs <- foldM (pokeChasm chptr) 0 (cw ^. chasms)
|
||||||
|
|||||||
@@ -130,16 +130,17 @@ preloadRender = do
|
|||||||
barrelShad <- makeShaderVBO "texture/barrel" [vert, geom, frag] (toFloatVAs [2, 2, 2, 1]) pmPoints
|
barrelShad <- makeShaderVBO "texture/barrel" [vert, geom, frag] (toFloatVAs [2, 2, 2, 1]) pmPoints
|
||||||
-- blank wallShader
|
-- blank wallShader
|
||||||
putStrLn "Setup floor VBO, shader"
|
putStrLn "Setup floor VBO, shader"
|
||||||
let floorverxstrd = 8
|
flvbo <- mglCreate glCreateBuffers
|
||||||
floorvbo <- setupVBOStatic (floatSize * floorverxstrd)
|
flptr <- mallocArray (8 * 65536)
|
||||||
floorshader <- makeShaderUsingVBO "floor/arrayPos" [vert, frag] (toFloatVAs [4, 4]) pmTriangles floorvbo
|
let floorvbo = VBO flvbo flptr (8 * floatSize)
|
||||||
|
floorshader <- makeSourcedShader "floor/arrayPos" [vert, frag]
|
||||||
initTexture2DArraySquare 40 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/diffuseArray.png"
|
initTexture2DArraySquare 40 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/diffuseArray.png"
|
||||||
initTexture2DArraySquare 41 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/normalArray.png"
|
initTexture2DArraySquare 41 3 GL_LINEAR_MIPMAP_LINEAR GL_LINEAR "data/normalMaps/normalArray.png"
|
||||||
|
|
||||||
putStrLn "Setup chasm VBO, shader"
|
putStrLn "Setup chasm VBO, shader"
|
||||||
chvbo <- mglCreate glCreateBuffers
|
chvbo <- mglCreate glCreateBuffers
|
||||||
chptr <- mallocArray (2 * 65536)
|
chptr <- mallocArray (2 * 65536)
|
||||||
let chasmvbo = VBO chvbo chptr floatSize
|
let chasmvbo = VBO chvbo chptr (2 * floatSize)
|
||||||
chasmshader <- makeSourcedShader "chasm" [vert]
|
chasmshader <- makeSourcedShader "chasm" [vert]
|
||||||
framebuf2 <- newTextureFramebuffer
|
framebuf2 <- newTextureFramebuffer
|
||||||
framebuf3 <- newTextureFramebuffer
|
framebuf3 <- newTextureFramebuffer
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ pokeTileVerx tangent tilez ptr i (V2 x y, V2 s t) = do
|
|||||||
return $ i + 1
|
return $ i + 1
|
||||||
|
|
||||||
pokeChasm :: Ptr Float -> Int -> [Point2] -> IO Int
|
pokeChasm :: Ptr Float -> Int -> [Point2] -> IO Int
|
||||||
pokeChasm ptr i ps = foldM (pokeChasmVerx ptr) i $ polyToTris ps
|
pokeChasm ptr i = foldM (pokeChasmVerx ptr) i . polyToTris
|
||||||
|
|
||||||
pokeChasmVerx :: Ptr Float -> Int -> Point2 -> IO Int
|
pokeChasmVerx :: Ptr Float -> Int -> Point2 -> IO Int
|
||||||
pokeChasmVerx ptr i p = do
|
pokeChasmVerx ptr i p = do
|
||||||
|
|||||||
@@ -2704,7 +2704,7 @@ brightX src/Color.hs 116;" f
|
|||||||
btSPic src/Dodge/Render/ShapePicture.hs 129;" f
|
btSPic src/Dodge/Render/ShapePicture.hs 129;" f
|
||||||
btText src/Dodge/Inventory/SelectionList.hs 237;" f
|
btText src/Dodge/Inventory/SelectionList.hs 237;" f
|
||||||
bufferEBO src/Shader/Bind.hs 28;" f
|
bufferEBO src/Shader/Bind.hs 28;" f
|
||||||
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 437;" f
|
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 418;" f
|
||||||
bufferPokedVBO src/Shader/Bind.hs 19;" f
|
bufferPokedVBO src/Shader/Bind.hs 19;" f
|
||||||
bufferShaderLayers src/Shader/Bind.hs 32;" f
|
bufferShaderLayers src/Shader/Bind.hs 32;" f
|
||||||
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
|
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
|
||||||
@@ -2882,7 +2882,7 @@ copier src/Dodge/Item/Scope.hs 88;" f
|
|||||||
copierItemUpdate src/Dodge/Creature/State.hs 131;" f
|
copierItemUpdate src/Dodge/Creature/State.hs 131;" f
|
||||||
copyItemToFloor src/Dodge/FloorItem.hs 14;" f
|
copyItemToFloor src/Dodge/FloorItem.hs 14;" f
|
||||||
corDoor src/Dodge/Room/Room.hs 385;" f
|
corDoor src/Dodge/Room/Room.hs 385;" f
|
||||||
cornerList src/Preload/Render.hs 217;" f
|
cornerList src/Preload/Render.hs 213;" f
|
||||||
corpseOrGib src/Dodge/Creature/Update.hs 111;" f
|
corpseOrGib src/Dodge/Creature/Update.hs 111;" f
|
||||||
corridor src/Dodge/Room/Corridor.hs 17;" f
|
corridor src/Dodge/Room/Corridor.hs 17;" f
|
||||||
corridorBoss src/Dodge/LockAndKey.hs 133;" f
|
corridorBoss src/Dodge/LockAndKey.hs 133;" f
|
||||||
@@ -3558,7 +3558,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
|
|||||||
getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f
|
getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f
|
||||||
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f
|
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f
|
||||||
getDebugMouseOver src/Dodge/Update.hs 374;" f
|
getDebugMouseOver src/Dodge/Update.hs 374;" f
|
||||||
getDistortions src/Dodge/Render.hs 449;" f
|
getDistortions src/Dodge/Render.hs 430;" f
|
||||||
getEdgesCrossing src/Dodge/Path.hs 37;" f
|
getEdgesCrossing src/Dodge/Path.hs 37;" f
|
||||||
getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f
|
getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f
|
||||||
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
|
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
|
||||||
@@ -3709,7 +3709,7 @@ initWallZoning src/Dodge/Wall/Zone.hs 12;" f
|
|||||||
initialRoomTree src/Dodge/Floor.hs 24;" f
|
initialRoomTree src/Dodge/Floor.hs 24;" f
|
||||||
initialWorld src/Dodge/Initialisation.hs 15;" f
|
initialWorld src/Dodge/Initialisation.hs 15;" f
|
||||||
initialisePlaying src/Sound.hs 77;" f
|
initialisePlaying src/Sound.hs 77;" f
|
||||||
initializeGLState src/Preload/Render.hs 238;" f
|
initializeGLState src/Preload/Render.hs 234;" f
|
||||||
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
|
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
|
||||||
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
|
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
|
||||||
initializeTexture2D src/Framebuffer/Update.hs 217;" f
|
initializeTexture2D src/Framebuffer/Update.hs 217;" f
|
||||||
@@ -4392,7 +4392,7 @@ poke34 src/Shader/Poke.hs 508;" f
|
|||||||
pokeArrayOff src/Shader/Poke.hs 519;" f
|
pokeArrayOff src/Shader/Poke.hs 519;" f
|
||||||
pokeBox src/Shader/Poke.hs 228;" f
|
pokeBox src/Shader/Poke.hs 228;" f
|
||||||
pokeBoxSurface src/Shader/Poke.hs 261;" f
|
pokeBoxSurface src/Shader/Poke.hs 261;" f
|
||||||
pokeChasm src/Shader/Poke/Floor.hs 24;" f
|
pokeChasm src/Shader/Poke/Floor.hs 25;" f
|
||||||
pokeChasmVerx src/Shader/Poke/Floor.hs 28;" f
|
pokeChasmVerx src/Shader/Poke/Floor.hs 28;" f
|
||||||
pokeCloud src/Shader/Poke/Cloud.hs 14;" f
|
pokeCloud src/Shader/Poke/Cloud.hs 14;" f
|
||||||
pokeCloudLike src/Shader/Poke/Cloud.hs 32;" f
|
pokeCloudLike src/Shader/Poke/Cloud.hs 32;" f
|
||||||
@@ -4411,8 +4411,8 @@ pokeRoundedFaces src/Shader/Poke.hs 141;" f
|
|||||||
pokeShape src/Shader/Poke.hs 112;" f
|
pokeShape src/Shader/Poke.hs 112;" f
|
||||||
pokeShapeObj src/Shader/Poke.hs 125;" f
|
pokeShapeObj src/Shader/Poke.hs 125;" f
|
||||||
pokeStride src/Shader/Poke.hs 500;" f
|
pokeStride src/Shader/Poke.hs 500;" f
|
||||||
pokeTile src/Shader/Poke/Floor.hs 12;" f
|
pokeTile src/Shader/Poke/Floor.hs 13;" f
|
||||||
pokeTileVerx src/Shader/Poke/Floor.hs 18;" f
|
pokeTileVerx src/Shader/Poke/Floor.hs 19;" f
|
||||||
pokeVerx src/Shader/Poke.hs 39;" f
|
pokeVerx src/Shader/Poke.hs 39;" f
|
||||||
pokeVerxs src/Shader/Poke.hs 32;" f
|
pokeVerxs src/Shader/Poke.hs 32;" f
|
||||||
pokeW src/Shader/Poke.hs 90;" f
|
pokeW src/Shader/Poke.hs 90;" f
|
||||||
@@ -4443,8 +4443,8 @@ posRms src/Dodge/Tree/Shift.hs 44;" f
|
|||||||
posSelSecYint src/Dodge/SelectionSections.hs 147;" f
|
posSelSecYint src/Dodge/SelectionSections.hs 147;" f
|
||||||
positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f
|
positionRoomsFromTree src/Dodge/Tree/Shift.hs 35;" f
|
||||||
postGenerationProcessing src/Dodge/LevelGen.hs 30;" f
|
postGenerationProcessing src/Dodge/LevelGen.hs 30;" f
|
||||||
postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 11;" f
|
postUniverseLoadSideEffect src/Dodge/WorldLoad.hs 12;" f
|
||||||
postWorldLoad src/Dodge/WorldLoad.hs 15;" f
|
postWorldLoad src/Dodge/WorldLoad.hs 17;" f
|
||||||
powerFakeout src/Dodge/Room/Start.hs 28;" f
|
powerFakeout src/Dodge/Room/Start.hs 28;" f
|
||||||
powerFakeout' src/Dodge/Room/Start.hs 25;" f
|
powerFakeout' src/Dodge/Room/Start.hs 25;" f
|
||||||
powerLegs src/Dodge/Item/Equipment.hs 85;" f
|
powerLegs src/Dodge/Item/Equipment.hs 85;" f
|
||||||
@@ -4821,7 +4821,7 @@ setTiles src/Dodge/Layout.hs 67;" f
|
|||||||
setTreeInts src/Dodge/Room/Tutorial.hs 98;" f
|
setTreeInts src/Dodge/Room/Tutorial.hs 98;" f
|
||||||
setViewDistance src/Dodge/Update/Camera.hs 239;" f
|
setViewDistance src/Dodge/Update/Camera.hs 239;" f
|
||||||
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
|
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
|
||||||
setViewport src/Dodge/Render.hs 454;" f
|
setViewport src/Dodge/Render.hs 435;" f
|
||||||
setVol src/Dodge/Config.hs 47;" f
|
setVol src/Dodge/Config.hs 47;" f
|
||||||
setWristShieldPos src/Dodge/Equipment.hs 49;" f
|
setWristShieldPos src/Dodge/Equipment.hs 49;" f
|
||||||
setWristShieldPos src/Dodge/Euse.hs 38;" f
|
setWristShieldPos src/Dodge/Euse.hs 38;" f
|
||||||
|
|||||||
Reference in New Issue
Block a user