From 44f64f4b472d6684b4c1bc7798cbeb08a82f77e0 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 13 Apr 2023 02:42:43 +0100 Subject: [PATCH] Move shape parameters into separate file --- src/Preload/Render.hs | 7 ++----- src/Shader/Poke.hs | 4 +--- src/Shape/Data.hs | 3 --- src/Shape/Parameters.hs | 19 +++++++++++++++++++ 4 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 src/Shape/Parameters.hs diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 5f2a204de..b8b0f0ab5 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -5,6 +5,7 @@ module Preload.Render ( cleanUpRenderPreload, ) where +import Shape.Parameters import Shader.Parameters import Control.Concurrent import Control.Lens @@ -18,7 +19,6 @@ import Graphics.GL.Core45 import Shader.AuxAddition import Shader.Compile import Shader.Data -import Shape.Data {- BINDING LIST: 0 base @@ -73,10 +73,7 @@ preloadRender = do -- note the shape shader vao is distinct from the position vao, but they -- share an EBO shapeshader <- makeShaderUsingVBO "shape/basic" [vert, frag] - [VertexAttribute 4 GL_FLOAT GL_FALSE 0 - ,VertexAttribute 4 GL_UNSIGNED_BYTE GL_TRUE (fromIntegral 4 * fromIntegral floatSize) - ,VertexAttribute 4 GL_FLOAT GL_FALSE (fromIntegral 4 * fromIntegral (floatSize + ubyteSize)) - ] + shapeVerxAttributes pmTriangles shVBO glVertexArrayElementBuffer (shapeshader ^. shaderVAO . vaoName) (shEBO ^. eboName) diff --git a/src/Shader/Poke.hs b/src/Shader/Poke.hs index 7773f19e7..2defafc98 100644 --- a/src/Shader/Poke.hs +++ b/src/Shader/Poke.hs @@ -9,6 +9,7 @@ module Shader.Poke ( pokeFloors, ) where +import Shape.Parameters import Color import Control.Monad.Primitive import qualified Data.Vector as V @@ -433,7 +434,6 @@ pokeJustV xdata cp col ptr nv sh = do return (nv + 1) where V3 x y z = sh - V4 r g b a = col V3 nx ny nz = cp pokeJustVInvNormal :: @@ -452,7 +452,6 @@ pokeJustVInvNormal xdata cp col ptr nv sh = do return (nv + 1) where V3 x y z = sh - V4 r g b a = col V3 nx ny nz = (2 * sh) - cp pokeFlatV :: @@ -471,7 +470,6 @@ pokeFlatV xdata norm col ptr nv sh = do return (nv + 1) where V3 x y z = sh - V4 r g b a = col V3 nx ny nz = sh - norm pokeLayVerxs :: diff --git a/src/Shape/Data.hs b/src/Shape/Data.hs index 259643386..6790a1b1b 100644 --- a/src/Shape/Data.hs +++ b/src/Shape/Data.hs @@ -8,12 +8,10 @@ module Shape.Data where -import Foreign.Storable import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data -import Data.Word data ShapeType = FlatFaces { _topBoxSize :: Int } @@ -54,7 +52,6 @@ makeLenses ''ShapeType type Shape = [Surface] -shapeVerxSize = sizeOf (0 :: Float) * 8 + 4 * sizeOf (0 :: Word8) --nShapeVerxComp :: Int --nShapeVerxComp = sum shapeVerxSizes diff --git a/src/Shape/Parameters.hs b/src/Shape/Parameters.hs new file mode 100644 index 000000000..65fe7b54f --- /dev/null +++ b/src/Shape/Parameters.hs @@ -0,0 +1,19 @@ +module Shape.Parameters + where + +import Shader.Parameters +import Shader.Data +import Data.Word +import Foreign.Storable +import Graphics.GL.Core45 + +shapeVerxSize :: Int +shapeVerxSize = sizeOf (0 :: Float) * 8 + 4 * sizeOf (0 :: Word8) + +shapeVerxAttributes :: [VertexAttribute] +shapeVerxAttributes = + [VertexAttribute 4 GL_FLOAT GL_FALSE 0 + ,VertexAttribute 4 GL_UNSIGNED_BYTE GL_TRUE (fromIntegral (4 :: Int) * fromIntegral floatSize) + ,VertexAttribute 4 GL_FLOAT GL_FALSE (fromIntegral (4 :: Int) * fromIntegral (floatSize + ubyteSize)) + ] +