|
|
|
@ -7,8 +7,6 @@ |
|
|
|
#define UTIL_IMPLEMENTATION |
|
|
|
#define UTIL_IMPLEMENTATION |
|
|
|
#include "util.h" |
|
|
|
#include "util.h" |
|
|
|
|
|
|
|
|
|
|
|
using glm::vec4; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// forward declarations
|
|
|
|
// forward declarations
|
|
|
|
|
|
|
|
|
|
|
|
@ -325,7 +323,7 @@ initGraphics(SDLHandles* handles, const char* title, uvec2 dims) |
|
|
|
LightsBuffer* |
|
|
|
LightsBuffer* |
|
|
|
initLights(RenderState* rs, |
|
|
|
initLights(RenderState* rs, |
|
|
|
u32 max_lights, |
|
|
|
u32 max_lights, |
|
|
|
glm::vec4 ambient_color) |
|
|
|
vec4 ambient_color) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// FIXME: revisit for 'Scene' abstraction
|
|
|
|
// FIXME: revisit for 'Scene' abstraction
|
|
|
|
// FIXME: see if we can simplify this with the use of offsetof()
|
|
|
|
// FIXME: see if we can simplify this with the use of offsetof()
|
|
|
|
@ -333,8 +331,8 @@ initLights(RenderState* rs, |
|
|
|
|
|
|
|
|
|
|
|
LightsBuffer* lb = ARENA_ALLOC(rs->assets.arena, LightsBuffer, 1); |
|
|
|
LightsBuffer* lb = ARENA_ALLOC(rs->assets.arena, LightsBuffer, 1); |
|
|
|
lb->buf_size = 8 * sizeof(u32) // NOTE: 'header'
|
|
|
|
lb->buf_size = 8 * sizeof(u32) // NOTE: 'header'
|
|
|
|
+ sizeof(glm::vec4) // NOTE: ambient color
|
|
|
|
+ sizeof(vec4) // NOTE: ambient color
|
|
|
|
+ 6 * max_lights * sizeof(glm::vec4); // NOTE: vector arrays
|
|
|
|
+ 6 * max_lights * sizeof(vec4); // NOTE: vector arrays
|
|
|
|
LOGF(Debug, "buf_size: %d\n", lb->buf_size); |
|
|
|
LOGF(Debug, "buf_size: %d\n", lb->buf_size); |
|
|
|
lb->buffer = ARENA_ALLOC(rs->assets.arena, u8, lb->buf_size); |
|
|
|
lb->buffer = ARENA_ALLOC(rs->assets.arena, u8, lb->buf_size); |
|
|
|
|
|
|
|
|
|
|
|
@ -355,23 +353,23 @@ initLights(RenderState* rs, |
|
|
|
void* arr_start = arenaGetAddressOffset(lb->buffer, 8 * sizeof(u32)); |
|
|
|
void* arr_start = arenaGetAddressOffset(lb->buffer, 8 * sizeof(u32)); |
|
|
|
|
|
|
|
|
|
|
|
// NOTE: ambient color
|
|
|
|
// NOTE: ambient color
|
|
|
|
lb->ambient_color = (glm::vec4*) arr_start; |
|
|
|
lb->ambient_color = (vec4*) arr_start; |
|
|
|
*lb->ambient_color = ambient_color; |
|
|
|
*lb->ambient_color = ambient_color; |
|
|
|
|
|
|
|
|
|
|
|
// NOTE: set offsets for array pointers
|
|
|
|
// NOTE: set offsets for array pointers
|
|
|
|
u32 arr_size = max_lights * sizeof(glm::vec4); |
|
|
|
u32 arr_size = max_lights * sizeof(vec4); |
|
|
|
lb->pl_positions = //(glm::vec4*) arr_start;
|
|
|
|
lb->pl_positions = //(vec4*) arr_start;
|
|
|
|
(glm::vec4*) arenaGetAddressOffset(arr_start, sizeof(glm::vec4)); |
|
|
|
(vec4*) arenaGetAddressOffset(arr_start, sizeof(vec4)); |
|
|
|
lb->pl_colors = |
|
|
|
lb->pl_colors = |
|
|
|
(glm::vec4*) arenaGetAddressOffset(lb->pl_positions, arr_size); |
|
|
|
(vec4*) arenaGetAddressOffset(lb->pl_positions, arr_size); |
|
|
|
lb->pl_intensities = |
|
|
|
lb->pl_intensities = |
|
|
|
(glm::uvec4*) arenaGetAddressOffset(lb->pl_colors, arr_size); |
|
|
|
(uvec4*) arenaGetAddressOffset(lb->pl_colors, arr_size); |
|
|
|
lb->dl_directions = |
|
|
|
lb->dl_directions = |
|
|
|
(glm::vec4*) arenaGetAddressOffset(lb->pl_intensities, arr_size); |
|
|
|
(vec4*) arenaGetAddressOffset(lb->pl_intensities, arr_size); |
|
|
|
lb->dl_colors = |
|
|
|
lb->dl_colors = |
|
|
|
(glm::vec4*) arenaGetAddressOffset(lb->dl_directions, arr_size); |
|
|
|
(vec4*) arenaGetAddressOffset(lb->dl_directions, arr_size); |
|
|
|
lb->dl_intensities = |
|
|
|
lb->dl_intensities = |
|
|
|
(glm::uvec4*) arenaGetAddressOffset(lb->dl_colors, arr_size); |
|
|
|
(uvec4*) arenaGetAddressOffset(lb->dl_colors, arr_size); |
|
|
|
|
|
|
|
|
|
|
|
initGLBackingBuffer(rs->gl_ctx, |
|
|
|
initGLBackingBuffer(rs->gl_ctx, |
|
|
|
rs->assets.arena, |
|
|
|
rs->assets.arena, |
|
|
|
|