diff options
| author | andromeda <andromeda@lenovo> | 2026-02-07 18:59:23 +0100 |
|---|---|---|
| committer | andromeda <andromeda@lenovo> | 2026-02-07 18:59:23 +0100 |
| commit | 4d59cd7569c4c45e6d37855523c905377a50fdca (patch) | |
| tree | 4727a74200d660d44681632680a93db393ada5e8 /src/Game | |
| parent | 5474012f893debd21eb1f84aa7390ea9c6eeafd2 (diff) | |
better colors
Diffstat (limited to 'src/Game')
| -rw-r--r-- | src/Game/Internal.hs | 39 |
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);", "}" ] |
