diff options
-rw-r--r-- | Spear.cabal | 2 | ||||
-rw-r--r-- | Spear/GL.hs (renamed from Spear/GLSL.hs) | 2 | ||||
-rw-r--r-- | Spear/Render/AnimatedModel.hs | 2 | ||||
-rw-r--r-- | Spear/Render/Program.hs | 17 | ||||
-rw-r--r-- | Spear/Render/StaticModel.hs | 2 | ||||
-rw-r--r-- | Spear/Scene/GameObject.hs | 2 | ||||
-rw-r--r-- | Spear/Scene/Loader.hs | 24 | ||||
-rw-r--r-- | Spear/Scene/SceneResources.hs | 12 |
8 files changed, 19 insertions, 44 deletions
diff --git a/Spear.cabal b/Spear.cabal index 2f21fad..316c1eb 100644 --- a/Spear.cabal +++ b/Spear.cabal | |||
@@ -20,7 +20,7 @@ library | |||
20 | Spear.Physics.Types Spear.App Spear.App.Application Spear.App.Input | 20 | Spear.Physics.Types Spear.App Spear.App.Application Spear.App.Input |
21 | Spear.Assets.Image Spear.Assets.Model Spear.Collision | 21 | Spear.Assets.Image Spear.Assets.Model Spear.Collision |
22 | Spear.Math.AABB Spear.Math.Circle Spear.Math.Triangle Spear.Game | 22 | Spear.Math.AABB Spear.Math.Circle Spear.Math.Triangle Spear.Game |
23 | Spear.GLSL Spear.Math.Camera Spear.Math.Entity Spear.Math.Matrix3 | 23 | Spear.GL Spear.Math.Camera Spear.Math.Entity Spear.Math.Matrix3 |
24 | Spear.Math.Matrix4 Spear.Math.MatrixUtils Spear.Math.Plane | 24 | Spear.Math.Matrix4 Spear.Math.MatrixUtils Spear.Math.Plane |
25 | Spear.Math.Quaternion Spear.Math.Vector Spear.Math.Vector.Class | 25 | Spear.Math.Quaternion Spear.Math.Vector Spear.Math.Vector.Class |
26 | Spear.Math.Vector.Vector3 Spear.Math.Vector.Vector4 | 26 | Spear.Math.Vector.Vector3 Spear.Math.Vector.Vector4 |
diff --git a/Spear/GLSL.hs b/Spear/GL.hs index 8541e1f..05e439a 100644 --- a/Spear/GLSL.hs +++ b/Spear/GL.hs | |||
@@ -1,4 +1,4 @@ | |||
1 | module Spear.GLSL | 1 | module Spear.GL |
2 | ( | 2 | ( |
3 | -- * General Management | 3 | -- * General Management |
4 | GLSLShader | 4 | GLSLShader |
diff --git a/Spear/Render/AnimatedModel.hs b/Spear/Render/AnimatedModel.hs index e554272..be3e2e3 100644 --- a/Spear/Render/AnimatedModel.hs +++ b/Spear/Render/AnimatedModel.hs | |||
@@ -30,7 +30,7 @@ where | |||
30 | import Spear.Assets.Model | 30 | import Spear.Assets.Model |
31 | import Spear.Collision | 31 | import Spear.Collision |
32 | import Spear.Game | 32 | import Spear.Game |
33 | import Spear.GLSL | 33 | import Spear.GL |
34 | import Spear.Math.AABB | 34 | import Spear.Math.AABB |
35 | import Spear.Math.Matrix4 (Matrix4) | 35 | import Spear.Math.Matrix4 (Matrix4) |
36 | import Spear.Math.Vector | 36 | import Spear.Math.Vector |
diff --git a/Spear/Render/Program.hs b/Spear/Render/Program.hs index ab2a548..6e94ca5 100644 --- a/Spear/Render/Program.hs +++ b/Spear/Render/Program.hs | |||
@@ -11,34 +11,28 @@ module Spear.Render.Program | |||
11 | ) | 11 | ) |
12 | where | 12 | where |
13 | 13 | ||
14 | 14 | import Spear.GL (GLSLProgram) | |
15 | import Spear.GLSL (GLSLProgram) | ||
16 | |||
17 | 15 | ||
18 | import Graphics.Rendering.OpenGL.Raw.Core31 | 16 | import Graphics.Rendering.OpenGL.Raw.Core31 |
19 | 17 | ||
20 | |||
21 | data StaticProgram = StaticProgram | 18 | data StaticProgram = StaticProgram |
22 | { staticProgram :: GLSLProgram | 19 | { staticProgram :: GLSLProgram |
23 | , staticProgramChannels :: StaticProgramChannels | 20 | , staticProgramChannels :: StaticProgramChannels |
24 | , staticProgramUniforms :: StaticProgramUniforms | 21 | , staticProgramUniforms :: StaticProgramUniforms |
25 | } | 22 | } |
26 | 23 | ||
27 | |||
28 | data AnimatedProgram = AnimatedProgram | 24 | data AnimatedProgram = AnimatedProgram |
29 | { animatedProgram :: GLSLProgram | 25 | { animatedProgram :: GLSLProgram |
30 | , animatedProgramChannels :: AnimatedProgramChannels | 26 | , animatedProgramChannels :: AnimatedProgramChannels |
31 | , animatedProgramUniforms :: AnimatedProgramUniforms | 27 | , animatedProgramUniforms :: AnimatedProgramUniforms |
32 | } | 28 | } |
33 | 29 | ||
34 | |||
35 | data StaticProgramChannels = StaticProgramChannels | 30 | data StaticProgramChannels = StaticProgramChannels |
36 | { vertexChannel :: GLuint -- ^ Vertex channel. | 31 | { vertexChannel :: GLuint -- ^ Vertex channel. |
37 | , normalChannel :: GLuint -- ^ Normal channel. | 32 | , normalChannel :: GLuint -- ^ Normal channel. |
38 | , stexChannel :: GLuint -- ^ Texture channel. | 33 | , stexChannel :: GLuint -- ^ Texture channel. |
39 | } | 34 | } |
40 | 35 | ||
41 | |||
42 | data AnimatedProgramChannels = AnimatedProgramChannels | 36 | data AnimatedProgramChannels = AnimatedProgramChannels |
43 | { vertexChannel1 :: GLuint -- ^ Vertex channel 1. | 37 | { vertexChannel1 :: GLuint -- ^ Vertex channel 1. |
44 | , vertexChannel2 :: GLuint -- ^ Vertex channel 2. | 38 | , vertexChannel2 :: GLuint -- ^ Vertex channel 2. |
@@ -47,7 +41,6 @@ data AnimatedProgramChannels = AnimatedProgramChannels | |||
47 | , atexChannel :: GLuint -- ^ Texture channel. | 41 | , atexChannel :: GLuint -- ^ Texture channel. |
48 | } | 42 | } |
49 | 43 | ||
50 | |||
51 | data StaticProgramUniforms = StaticProgramUniforms | 44 | data StaticProgramUniforms = StaticProgramUniforms |
52 | { skaLoc :: GLint -- ^ Material ambient uniform location. | 45 | { skaLoc :: GLint -- ^ Material ambient uniform location. |
53 | , skdLoc :: GLint -- ^ Material diffuse uniform location. | 46 | , skdLoc :: GLint -- ^ Material diffuse uniform location. |
@@ -59,7 +52,6 @@ data StaticProgramUniforms = StaticProgramUniforms | |||
59 | , sprojLoc :: GLint -- ^ Projection matrix location. | 52 | , sprojLoc :: GLint -- ^ Projection matrix location. |
60 | } | 53 | } |
61 | 54 | ||
62 | |||
63 | data AnimatedProgramUniforms = AnimatedProgramUniforms | 55 | data AnimatedProgramUniforms = AnimatedProgramUniforms |
64 | { akaLoc :: GLint -- ^ Material ambient uniform location. | 56 | { akaLoc :: GLint -- ^ Material ambient uniform location. |
65 | , akdLoc :: GLint -- ^ Material diffuse uniform location. | 57 | , akdLoc :: GLint -- ^ Material diffuse uniform location. |
@@ -72,19 +64,15 @@ data AnimatedProgramUniforms = AnimatedProgramUniforms | |||
72 | , aprojLoc :: GLint -- ^ Projection matrix location. | 64 | , aprojLoc :: GLint -- ^ Projection matrix location. |
73 | } | 65 | } |
74 | 66 | ||
75 | |||
76 | class Program a where | 67 | class Program a where |
77 | program :: a -> GLSLProgram | 68 | program :: a -> GLSLProgram |
78 | 69 | ||
79 | |||
80 | instance Program StaticProgram where | 70 | instance Program StaticProgram where |
81 | program = staticProgram | 71 | program = staticProgram |
82 | 72 | ||
83 | |||
84 | instance Program AnimatedProgram where | 73 | instance Program AnimatedProgram where |
85 | program = animatedProgram | 74 | program = animatedProgram |
86 | 75 | ||
87 | |||
88 | class ProgramUniforms a where | 76 | class ProgramUniforms a where |
89 | kaLoc :: a -> GLint | 77 | kaLoc :: a -> GLint |
90 | kdLoc :: a -> GLint | 78 | kdLoc :: a -> GLint |
@@ -95,7 +83,6 @@ class ProgramUniforms a where | |||
95 | normalmatLoc :: a -> GLint | 83 | normalmatLoc :: a -> GLint |
96 | projLoc :: a -> GLint | 84 | projLoc :: a -> GLint |
97 | 85 | ||
98 | |||
99 | instance ProgramUniforms StaticProgramUniforms where | 86 | instance ProgramUniforms StaticProgramUniforms where |
100 | kaLoc = skaLoc | 87 | kaLoc = skaLoc |
101 | kdLoc = skdLoc | 88 | kdLoc = skdLoc |
@@ -106,8 +93,6 @@ instance ProgramUniforms StaticProgramUniforms where | |||
106 | normalmatLoc = snormalmatLoc | 93 | normalmatLoc = snormalmatLoc |
107 | projLoc = sprojLoc | 94 | projLoc = sprojLoc |
108 | 95 | ||
109 | |||
110 | |||
111 | instance ProgramUniforms AnimatedProgramUniforms where | 96 | instance ProgramUniforms AnimatedProgramUniforms where |
112 | kaLoc = akaLoc | 97 | kaLoc = akaLoc |
113 | kdLoc = akdLoc | 98 | kdLoc = akdLoc |
diff --git a/Spear/Render/StaticModel.hs b/Spear/Render/StaticModel.hs index fc7006e..42cf9d0 100644 --- a/Spear/Render/StaticModel.hs +++ b/Spear/Render/StaticModel.hs | |||
@@ -20,7 +20,7 @@ where | |||
20 | import Spear.Assets.Model | 20 | import Spear.Assets.Model |
21 | import Spear.Collision | 21 | import Spear.Collision |
22 | import Spear.Game | 22 | import Spear.Game |
23 | import Spear.GLSL | 23 | import Spear.GL |
24 | import Spear.Math.AABB | 24 | import Spear.Math.AABB |
25 | import Spear.Math.Matrix4 (Matrix4) | 25 | import Spear.Math.Matrix4 (Matrix4) |
26 | import Spear.Math.Vector | 26 | import Spear.Math.Vector |
diff --git a/Spear/Scene/GameObject.hs b/Spear/Scene/GameObject.hs index 37f9260..b981c00 100644 --- a/Spear/Scene/GameObject.hs +++ b/Spear/Scene/GameObject.hs | |||
@@ -32,7 +32,7 @@ where | |||
32 | 32 | ||
33 | 33 | ||
34 | import Spear.Collision as Col | 34 | import Spear.Collision as Col |
35 | import Spear.GLSL | 35 | import Spear.GL |
36 | import Spear.Math.AABB | 36 | import Spear.Math.AABB |
37 | import qualified Spear.Math.Camera as Cam | 37 | import qualified Spear.Math.Camera as Cam |
38 | import qualified Spear.Math.Matrix3 as M3 | 38 | import qualified Spear.Math.Matrix3 as M3 |
diff --git a/Spear/Scene/Loader.hs b/Spear/Scene/Loader.hs index 09d69eb..22657bd 100644 --- a/Spear/Scene/Loader.hs +++ b/Spear/Scene/Loader.hs | |||
@@ -20,7 +20,7 @@ where | |||
20 | import Spear.Assets.Model as Model | 20 | import Spear.Assets.Model as Model |
21 | import Spear.Collision | 21 | import Spear.Collision |
22 | import Spear.Game | 22 | import Spear.Game |
23 | import qualified Spear.GLSL as GLSL | 23 | import qualified Spear.GL as GL |
24 | import Spear.Math.Matrix3 as M3 | 24 | import Spear.Math.Matrix3 as M3 |
25 | import Spear.Math.Matrix4 as M4 | 25 | import Spear.Math.Matrix4 as M4 |
26 | import Spear.Math.MatrixUtils (fastNormalMatrix) | 26 | import Spear.Math.MatrixUtils (fastNormalMatrix) |
@@ -201,20 +201,20 @@ rotateModel (Rotation ax ay az order) model = | |||
201 | in | 201 | in |
202 | flip Model.transformVerts vTransform . flip Model.transformNormals nTransform $ model | 202 | flip Model.transformVerts vTransform . flip Model.transformNormals nTransform $ model |
203 | 203 | ||
204 | loadTexture :: FilePath -> Loader GLSL.Texture | 204 | loadTexture :: FilePath -> Loader GL.Texture |
205 | loadTexture file = | 205 | loadTexture file = |
206 | loadResource file textures addTexture $ | 206 | loadResource file textures addTexture $ |
207 | GLSL.loadTextureImage file gl_LINEAR gl_LINEAR | 207 | GL.loadTextureImage file gl_LINEAR gl_LINEAR |
208 | 208 | ||
209 | newShaderProgram :: SceneGraph -> Loader () | 209 | newShaderProgram :: SceneGraph -> Loader () |
210 | newShaderProgram (SceneLeaf _ props) = do | 210 | newShaderProgram (SceneLeaf _ props) = do |
211 | (vsName, vertShader) <- Spear.Scene.Loader.loadShader GLSL.VertexShader props | 211 | (vsName, vertShader) <- Spear.Scene.Loader.loadShader GL.VertexShader props |
212 | (fsName, fragShader) <- Spear.Scene.Loader.loadShader GLSL.FragmentShader props | 212 | (fsName, fragShader) <- Spear.Scene.Loader.loadShader GL.FragmentShader props |
213 | name <- asString $ mandatory' "name" props | 213 | name <- asString $ mandatory' "name" props |
214 | stype <- asString $ mandatory' "type" props | 214 | stype <- asString $ mandatory' "type" props |
215 | prog <- GLSL.newProgram [vertShader, fragShader] | 215 | prog <- GL.newProgram [vertShader, fragShader] |
216 | 216 | ||
217 | let getUniformLoc name = (gameIO . SV.get $ GLSL.uniformLocation prog name) `GLSL.assertGL` name | 217 | let getUniformLoc name = (gameIO . SV.get $ GL.uniformLocation prog name) `GL.assertGL` name |
218 | 218 | ||
219 | case stype of | 219 | case stype of |
220 | "static" -> do | 220 | "static" -> do |
@@ -285,17 +285,17 @@ newShaderProgram (SceneLeaf _ props) = do | |||
285 | loadResource name customPrograms addCustomProgram $ return prog | 285 | loadResource name customPrograms addCustomProgram $ return prog |
286 | return () | 286 | return () |
287 | 287 | ||
288 | loadShader :: GLSL.ShaderType -> [Property] -> Loader (String, GLSL.GLSLShader) | 288 | loadShader :: GL.ShaderType -> [Property] -> Loader (String, GL.GLSLShader) |
289 | loadShader _ [] = gameError $ "Loader::vertexShader: empty list" | 289 | loadShader _ [] = gameError $ "Loader::vertexShader: empty list" |
290 | loadShader shaderType ((stype, file):xs) = | 290 | loadShader shaderType ((stype, file):xs) = |
291 | if shaderType == GLSL.VertexShader && stype == "vertex-shader" || | 291 | if shaderType == GL.VertexShader && stype == "vertex-shader" || |
292 | shaderType == GLSL.FragmentShader && stype == "fragment-shader" | 292 | shaderType == GL.FragmentShader && stype == "fragment-shader" |
293 | then let f = concat file | 293 | then let f = concat file |
294 | in loadShader' f shaderType >>= \shader -> return (f, shader) | 294 | in loadShader' f shaderType >>= \shader -> return (f, shader) |
295 | else Spear.Scene.Loader.loadShader shaderType xs | 295 | else Spear.Scene.Loader.loadShader shaderType xs |
296 | 296 | ||
297 | loadShader' :: String -> GLSL.ShaderType -> Loader GLSL.GLSLShader | 297 | loadShader' :: String -> GL.ShaderType -> Loader GL.GLSLShader |
298 | loadShader' file shaderType = loadResource file shaders addShader $ GLSL.loadShader file shaderType | 298 | loadShader' file shaderType = loadResource file shaders addShader $ GL.loadShader file shaderType |
299 | 299 | ||
300 | newLight :: SceneGraph -> Loader () | 300 | newLight :: SceneGraph -> Loader () |
301 | newLight _ = return () | 301 | newLight _ = return () |
diff --git a/Spear/Scene/SceneResources.hs b/Spear/Scene/SceneResources.hs index c2dabcf..d75db56 100644 --- a/Spear/Scene/SceneResources.hs +++ b/Spear/Scene/SceneResources.hs | |||
@@ -17,9 +17,8 @@ module Spear.Scene.SceneResources | |||
17 | ) | 17 | ) |
18 | where | 18 | where |
19 | 19 | ||
20 | |||
21 | import Spear.Assets.Model as Model | 20 | import Spear.Assets.Model as Model |
22 | import Spear.GLSL as GLSL | 21 | import Spear.GL as GL |
23 | import Spear.Math.Vector | 22 | import Spear.Math.Vector |
24 | import Spear.Render.AnimatedModel | 23 | import Spear.Render.AnimatedModel |
25 | import Spear.Render.Material | 24 | import Spear.Render.Material |
@@ -29,7 +28,6 @@ import Spear.Scene.Light | |||
29 | 28 | ||
30 | import Data.Map as M | 29 | import Data.Map as M |
31 | 30 | ||
32 | |||
33 | data SceneResources = SceneResources | 31 | data SceneResources = SceneResources |
34 | { shaders :: Map String GLSLShader | 32 | { shaders :: Map String GLSLShader |
35 | , customPrograms :: Map String GLSLProgram | 33 | , customPrograms :: Map String GLSLProgram |
@@ -41,42 +39,34 @@ data SceneResources = SceneResources | |||
41 | , lights :: [Light] | 39 | , lights :: [Light] |
42 | } | 40 | } |
43 | 41 | ||
44 | |||
45 | -- | Build an empty instance of 'SceneResources'. | 42 | -- | Build an empty instance of 'SceneResources'. |
46 | emptySceneResources = | 43 | emptySceneResources = |
47 | SceneResources M.empty M.empty M.empty M.empty M.empty M.empty M.empty [] | 44 | SceneResources M.empty M.empty M.empty M.empty M.empty M.empty M.empty [] |
48 | 45 | ||
49 | |||
50 | -- | Get the shader specified by the given string. | 46 | -- | Get the shader specified by the given string. |
51 | getShader :: SceneResources -> String -> Maybe GLSLShader | 47 | getShader :: SceneResources -> String -> Maybe GLSLShader |
52 | getShader res key = M.lookup key $ shaders res | 48 | getShader res key = M.lookup key $ shaders res |
53 | 49 | ||
54 | |||
55 | -- | Get the custom program specified by the given string. | 50 | -- | Get the custom program specified by the given string. |
56 | getCustomProgram :: SceneResources -> String -> Maybe GLSLProgram | 51 | getCustomProgram :: SceneResources -> String -> Maybe GLSLProgram |
57 | getCustomProgram res key = M.lookup key $ customPrograms res | 52 | getCustomProgram res key = M.lookup key $ customPrograms res |
58 | 53 | ||
59 | |||
60 | -- | Get the static program specified by the given string. | 54 | -- | Get the static program specified by the given string. |
61 | getStaticProgram :: SceneResources -> String -> Maybe StaticProgram | 55 | getStaticProgram :: SceneResources -> String -> Maybe StaticProgram |
62 | getStaticProgram res key = M.lookup key $ staticPrograms res | 56 | getStaticProgram res key = M.lookup key $ staticPrograms res |
63 | 57 | ||
64 | |||
65 | -- | Get the animated program specified by the given string. | 58 | -- | Get the animated program specified by the given string. |
66 | getAnimatedProgram :: SceneResources -> String -> Maybe AnimatedProgram | 59 | getAnimatedProgram :: SceneResources -> String -> Maybe AnimatedProgram |
67 | getAnimatedProgram res key = M.lookup key $ animatedPrograms res | 60 | getAnimatedProgram res key = M.lookup key $ animatedPrograms res |
68 | 61 | ||
69 | |||
70 | -- | Get the texture specified by the given string. | 62 | -- | Get the texture specified by the given string. |
71 | getTexture :: SceneResources -> String -> Maybe Texture | 63 | getTexture :: SceneResources -> String -> Maybe Texture |
72 | getTexture res key = M.lookup key $ textures res | 64 | getTexture res key = M.lookup key $ textures res |
73 | 65 | ||
74 | |||
75 | -- | Get the static model resource specified by the given string. | 66 | -- | Get the static model resource specified by the given string. |
76 | getStaticModel :: SceneResources -> String -> Maybe StaticModelResource | 67 | getStaticModel :: SceneResources -> String -> Maybe StaticModelResource |
77 | getStaticModel res key = M.lookup key $ staticModels res | 68 | getStaticModel res key = M.lookup key $ staticModels res |
78 | 69 | ||
79 | |||
80 | -- | Get the animated model resource specified by the given string. | 70 | -- | Get the animated model resource specified by the given string. |
81 | getAnimatedModel :: SceneResources -> String -> Maybe AnimatedModelResource | 71 | getAnimatedModel :: SceneResources -> String -> Maybe AnimatedModelResource |
82 | getAnimatedModel res key = M.lookup key $ animatedModels res | 72 | getAnimatedModel res key = M.lookup key $ animatedModels res |