summaryrefslogtreecommitdiff
path: root/src/Game
diff options
context:
space:
mode:
authorandromeda <andromeda@lenovo>2026-02-07 18:59:23 +0100
committerandromeda <andromeda@lenovo>2026-02-07 18:59:23 +0100
commit4d59cd7569c4c45e6d37855523c905377a50fdca (patch)
tree4727a74200d660d44681632680a93db393ada5e8 /src/Game
parent5474012f893debd21eb1f84aa7390ea9c6eeafd2 (diff)
better colors
Diffstat (limited to 'src/Game')
-rw-r--r--src/Game/Internal.hs39
1 files changed, 10 insertions, 29 deletions
diff --git a/src/Game/Internal.hs b/src/Game/Internal.hs
index 3556df0..4a41c8f 100644
--- a/src/Game/Internal.hs
+++ b/src/Game/Internal.hs
@@ -48,7 +48,11 @@ initResources arrays = do
listIOsToIOlist
[createObject arr 4 GL.Triangles (GL.AttribLocation 0) | arr <- arrays]
[]
- program <- loadColorShader
+ program <-
+ loadShaders
+ [ ShaderInfo GL.VertexShader (StringSource vertShader),
+ ShaderInfo GL.FragmentShader (StringSource fragShader)
+ ]
GL.currentProgram $= Just program
return (objects, program)
@@ -63,20 +67,6 @@ listIOsToIOlist (io : ios) out = do
-- u_ uniform
-- o_ fragment shader output
-loadBlackShader :: IO GL.Program
-loadBlackShader =
- loadShaders
- [ ShaderInfo GL.VertexShader (StringSource vertShader),
- ShaderInfo GL.FragmentShader (StringSource blackFragShader)
- ]
-
-loadColorShader :: IO GL.Program
-loadColorShader =
- loadShaders
- [ ShaderInfo GL.VertexShader (StringSource vertShader),
- ShaderInfo GL.FragmentShader (StringSource colorFragShader)
- ]
-
vertShader :: String
vertShader =
unlines
@@ -94,26 +84,17 @@ vertShader =
"}"
]
-colorFragShader :: String
-colorFragShader =
+fragShader :: String
+fragShader =
unlines
[ "#version 330 core",
"out vec4 o_vColor;",
"in vec3 v_pos;",
"void main()",
"{",
- " o_vColor = vec4((0.5 + 0.5 * normalize(v_pos)) / 2, 1.0);",
- "}"
- ]
-
-blackFragShader :: String
-blackFragShader =
- unlines
- [ "#version 330 core",
- "out vec4 o_vColor;",
- "void main()",
- "{",
- " o_vColor = vec4(0.0, 0.0, 0.0, 1.0);",
+ " // yoinked from https://stackoverflow.com/questions/14980712/how-to-get-flat-normals-on-a-cube/14981446#14981446",
+ " vec3 norm = normalize(cross(dFdx(v_pos), dFdy(v_pos)));",
+ " o_vColor = vec4((0.5 + 0.5 * norm) / 2, 1.0);",
"}"
]