better colors

This commit is contained in:
andromeda
2026-02-07 18:59:23 +01:00
parent 5474012f89
commit 4d59cd7569
2 changed files with 12 additions and 32 deletions

View File

@@ -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);",
"}"
]

View File

@@ -48,9 +48,8 @@ main = do
GLFW.setCursorPosCallback window $ Just (cursorPosHandler Nothing)
(objects, program) <-
initResources $
[map (v3tov4 0) $ map (+ V3 a 0 0) cube | a <- take 100 [4, 6 ..]]
++ [hCube]
++ [map (\v -> rotate4 0 3 (g90 / 3) (v + V4 0 3 0 0)) hCube]
[map (\v -> (V4 a 0 a 0) + (rotate4 0 3 (a * g90 / 6) v)) hCube | a <- take 100 [0, 2 ..]]
++ [map (+ V4 a 0 0 0) hCube | a <- take 100 [0, (-2) ..]]
let model =
mkModel