diff options
author | iurii plugatarov <[email protected]> | 2024-09-07 16:28:02 +0200 |
---|---|---|
committer | iurii plugatarov <[email protected]> | 2024-09-07 16:28:02 +0200 |
commit | 5382908378a2e4f4f56eed3fb587a056e01190f9 (patch) | |
tree | 06f7e5ec962cc534a141fe04194d7f5d1b92b077 /src | |
parent | e4e90e53f02f6a431422c7790a7df34d396a3c6a (diff) | |
download | funhalla-5382908378a2e4f4f56eed3fb587a056e01190f9.tar.gz |
update
Diffstat (limited to '')
-rw-r--r-- | src/cubes.odin | 58 | ||||
-rw-r--r-- | src/main.odin | 83 |
2 files changed, 83 insertions, 58 deletions
diff --git a/src/cubes.odin b/src/cubes.odin new file mode 100644 index 0000000..b6bcd1c --- /dev/null +++ b/src/cubes.odin @@ -0,0 +1,58 @@ +package funhalla + +vertices : []f32 : { + -0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, + 0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 1.0, 0.0, + 0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 1.0, 1.0, + 0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 1.0, 1.0, + -0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, + + -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, + 0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 0.0, + 0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 1.0, + 0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 1.0, + -0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 0.0, 1.0, + -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, + + -0.5, 0.5, 0.5, -1.0, 0.0, 0.0, 1.0, 0.0, + -0.5, 0.5, -0.5, -1.0, 0.0, 0.0, 1.0, 1.0, + -0.5, -0.5, -0.5, -1.0, 0.0, 0.0, 0.0, 1.0, + -0.5, -0.5, -0.5, -1.0, 0.0, 0.0, 0.0, 1.0, + -0.5, -0.5, 0.5, -1.0, 0.0, 0.0, 0.0, 0.0, + -0.5, 0.5, 0.5, -1.0, 0.0, 0.0, 1.0, 0.0, + + 0.5, 0.5, 0.5, 1.0, 0.0, 0.0, 1.0, 0.0, + 0.5, 0.5, -0.5, 1.0, 0.0, 0.0, 1.0, 1.0, + 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, 0.0, 1.0, + 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, 0.0, 1.0, + 0.5, -0.5, 0.5, 1.0, 0.0, 0.0, 0.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 0.0, 0.0, 1.0, 0.0, + + -0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 0.0, 1.0, + 0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 1.0, 1.0, + 0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 1.0, 0.0, + 0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 1.0, 0.0, + -0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 0.0, 0.0, + -0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 0.0, 1.0, + + -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 0.0, 1.0, + 0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 1.0, 1.0, + 0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 1.0, 0.0, + 0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 1.0, 0.0, + -0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 0.0, + -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 0.0, 1.0 +} + +cube_positions : []Vec3 : { + Vec3{ 0.0, 0.0, 0.0}, + Vec3{ 2.0, 5.0, -15.0}, + Vec3{-1.5, -2.2, -2.5}, + Vec3{-3.8, -2.0, -12.3}, + Vec3{ 2.4, -0.4, -3.5}, + Vec3{-1.7, 3.0, -7.5}, + Vec3{ 1.3, -2.0, -2.5}, + Vec3{ 1.5, 2.0, -2.5}, + Vec3{ 1.5, 0.2, -1.5}, + Vec3{-1.3, 1.0, -1.5} +} diff --git a/src/main.odin b/src/main.odin index 80080e4..617c3aa 100644 --- a/src/main.odin +++ b/src/main.odin @@ -116,51 +116,6 @@ main :: proc() { glfw.SetInputMode(window, glfw.CURSOR, glfw.CURSOR_DISABLED) - vertices: []f32 = { - // positions // normals // texture coords - -0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, - 0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 1.0, 0.0, - 0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 1.0, 1.0, - 0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 1.0, 1.0, - -0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, - - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, - 0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 0.0, - 0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 1.0, - 0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 1.0, - -0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 0.0, 1.0, - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 0.0, 0.0, - - -0.5, 0.5, 0.5, -1.0, 0.0, 0.0, 1.0, 0.0, - -0.5, 0.5, -0.5, -1.0, 0.0, 0.0, 1.0, 1.0, - -0.5, -0.5, -0.5, -1.0, 0.0, 0.0, 0.0, 1.0, - -0.5, -0.5, -0.5, -1.0, 0.0, 0.0, 0.0, 1.0, - -0.5, -0.5, 0.5, -1.0, 0.0, 0.0, 0.0, 0.0, - -0.5, 0.5, 0.5, -1.0, 0.0, 0.0, 1.0, 0.0, - - 0.5, 0.5, 0.5, 1.0, 0.0, 0.0, 1.0, 0.0, - 0.5, 0.5, -0.5, 1.0, 0.0, 0.0, 1.0, 1.0, - 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, 0.0, 1.0, - 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, 0.0, 1.0, - 0.5, -0.5, 0.5, 1.0, 0.0, 0.0, 0.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 0.0, 0.0, 1.0, 0.0, - - -0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 0.0, 1.0, - 0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 1.0, 1.0, - 0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 1.0, 0.0, - 0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 1.0, 0.0, - -0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 0.0, 0.0, - -0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 0.0, 1.0, - - -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 0.0, 1.0, - 0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 1.0, 1.0, - 0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 1.0, 0.0, - 0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 1.0, 0.0, - -0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 0.0, - -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 0.0, 1.0 - } - vbo, light_cube_vao, cube_vao: u32 gl.GenBuffers(1, &vbo) gl.BindBuffer(gl.ARRAY_BUFFER, vbo) @@ -244,6 +199,9 @@ main :: proc() { light_diffuse := Vec3{0.5, 0.5, 0.05} light_ambient := Vec3{0.2, 0.2, 0.2} light_specular := Vec3{1.0, 1.0, 1.0} + light_direction := Vec3{-0.2, -1.0, -0.3} + + shader_set_vec3(lighting_shader, "light_direction", &light_direction) shader_set_vec3(lighting_shader, cstring("light.ambient"), &light_ambient) shader_set_vec3(lighting_shader, cstring("light.diffuse"), &light_diffuse) shader_set_vec3(lighting_shader, cstring("light.specular"), &light_specular) @@ -277,19 +235,28 @@ main :: proc() { gl.BindTexture(gl.TEXTURE_2D, specular_map) gl.BindVertexArray(cube_vao) - gl.DrawArrays(gl.TRIANGLES, 0, 36) - - // lamp cube object drawing - shader_use(light_cube_shader) - shader_set_mat4(light_cube_shader, cstring("projection"), &projection) - shader_set_mat4(light_cube_shader, cstring("view"), &view) - - model = linalg.matrix4_translate_f32(light_pos) - model *= linalg.matrix4_scale_f32(Vec3{0.2, 0.2, 0.2}) - shader_set_mat4(light_cube_shader, cstring("model"), &model) - - gl.BindVertexArray(light_cube_vao) - gl.DrawArrays(gl.TRIANGLES, 0, 36) + // gl.DrawArrays(gl.TRIANGLES, 0, 36) + for position, i in cube_positions { + model = linalg.MATRIX4F32_IDENTITY + model *= linalg.matrix4_translate_f32(position) + angle : f32 = linalg.to_radians(20.0 * f32(i)) + model *= linalg.matrix4_rotate_f32(angle, Vec3{1.0, 0.3, 0.5}) + + shader_set_mat4(lighting_shader, "model", &model) + gl.DrawArrays(gl.TRIANGLES, 0, 36) + } + + //// lamp cube object drawing + //shader_use(light_cube_shader) + //shader_set_mat4(light_cube_shader, cstring("projection"), &projection) + //shader_set_mat4(light_cube_shader, cstring("view"), &view) + // + //model = linalg.matrix4_translate_f32(light_pos) + //model *= linalg.matrix4_scale_f32(Vec3{0.2, 0.2, 0.2}) + //shader_set_mat4(light_cube_shader, cstring("model"), &model) + // + //gl.BindVertexArray(light_cube_vao) + //gl.DrawArrays(gl.TRIANGLES, 0, 36) glfw.SwapBuffers(window) glfw.PollEvents() |