diff --git a/game/res/shaders/chunk.frag b/game/res/shaders/chunk.frag index 3799d9f..0c7b037 100644 --- a/game/res/shaders/chunk.frag +++ b/game/res/shaders/chunk.frag @@ -17,5 +17,5 @@ void main () result = mix (result, texture2D (materials[2], f_uv), f_material[1]); result = mix (result, texture2D (materials[3], f_uv), f_material[2]); - gl_FragColor = result * vec4(f_height, f_height, f_height, 1.0); + gl_FragColor = result; } diff --git a/game/res/shaders/chunk.vert b/game/res/shaders/chunk.vert index 50abf04..d75c126 100644 --- a/game/res/shaders/chunk.vert +++ b/game/res/shaders/chunk.vert @@ -12,7 +12,7 @@ varying float f_height; void main () { - f_uv = position.xy / 8.0; + f_uv = position.xz / 4.0; f_material = material; f_height = position.y; diff --git a/game/src/chunk/chunk.c b/game/src/chunk/chunk.c index 080e170..ce8e310 100644 --- a/game/src/chunk/chunk.c +++ b/game/src/chunk/chunk.c @@ -23,7 +23,7 @@ Chunk_noise (Chunk *chunk, int xoffset, int yoffset) (void) xoffset; (void) yoffset; float val = sinf (x) + sinf (y); (void) val; - chunk->heightmap[INDEX (x, y)] = (val + 0.5); + chunk->heightmap[INDEX (x, y)] = val; chunk->materialmap[INDEX (x, y)] = (int) val; } } diff --git a/game/src/chunk/chunkmesh.h b/game/src/chunk/chunkmesh.h index 110ba02..abee039 100644 --- a/game/src/chunk/chunkmesh.h +++ b/game/src/chunk/chunkmesh.h @@ -6,6 +6,7 @@ #include "../math_3d.h" #include "chunk.h" +/* TODO: set to + 1 */ #define CHUNKMESH_DIM (CHUNK_DIM+1) #define CHUNKMESH_SIZE (CHUNKMESH_DIM*CHUNKMESH_DIM) #define CMINDEX(x, y) (CHUNKMESH_DIM * (y) + (x)) diff --git a/game/src/main.c b/game/src/main.c index 5ed9db9..4169b2d 100644 --- a/game/src/main.c +++ b/game/src/main.c @@ -78,6 +78,10 @@ SDL_AppInit (void **appstate, int argc, char **argv) Chunk_noise (&chunk, 0, 0); test_chunkmesh = ChunkMesh_from_Chunk_and_neighbors (&chunk, NULL, NULL, NULL); + program_use (resources.programs[1]); + int arr[4] = { 0, 1, 2, 3 }; + program_set_int_array (resources.programs[1], "materials", 4, arr); + /* Set up game state. */ game_state.last_time = SDL_GetTicks (); diff --git a/game/src/program.c b/game/src/program.c index 882a50e..e220ccc 100644 --- a/game/src/program.c +++ b/game/src/program.c @@ -72,6 +72,12 @@ program_create (const char *v_src, const char *f_src) return program; } +void +program_set_int_array (int program, const char *name, size_t count, int *value) +{ + glUniform1iv (glGetUniformLocation (program, name), count, value); +} + void program_set_mat4 (int program, const char *name, mat4_t value) { diff --git a/game/src/program.h b/game/src/program.h index f3dab10..d2ed27b 100644 --- a/game/src/program.h +++ b/game/src/program.h @@ -11,5 +11,6 @@ void shader_fail (int shader); void program_fail (int program); int program_create (const char *v_src, const char *f_src); +void program_set_int_array (int program, const char *name, size_t count, int *value); void program_set_mat4 (int program, const char *name, mat4_t value); void program_print (int program);