| 184 | /////////////////////////////////////////// |
| 185 | |
| 186 | bool render_init() { |
| 187 | local = {}; |
| 188 | local.initialized = true; |
| 189 | local.camera_root = matrix_identity; |
| 190 | local.camera_root_final = matrix_identity; |
| 191 | local.camera_root_final_inv = matrix_identity; |
| 192 | local.sim_origin = matrix_identity; |
| 193 | local.sim_head = matrix_identity; |
| 194 | local.clip_planes = {0.02f, 50}; |
| 195 | local.fov = 90; |
| 196 | local.ortho_near_clip = 0.0f; |
| 197 | local.ortho_far_clip = 50.0f; |
| 198 | local.ortho_viewport_height = 1.0f; |
| 199 | local.clear_col = color128{0,0,0,0}; |
| 200 | local.list_primary = -1; |
| 201 | local.scale = 1; |
| 202 | local.multisample = 1; |
| 203 | local.primary_filter = render_layer_all_first_person; |
| 204 | local.capture_filter = render_layer_all_first_person; |
| 205 | local.list_active = -1; |
| 206 | |
| 207 | local.shader_globals = material_buffer_create(1, sizeof(local.global_buffer)); |
| 208 | local.shader_blit = skg_buffer_create(nullptr, 1, sizeof(render_blit_data_t), skg_buffer_type_constant, skg_use_dynamic); |
| 209 | #if !defined(SKG_OPENGL) && (defined(_DEBUG) || defined(SK_GPU_LABELS)) |
| 210 | skg_buffer_name(&local.shader_blit, "sk/render/blit_buffer"); |
| 211 | #endif |
| 212 | |
| 213 | local.instance_buffer = skg_buffer_create(nullptr, render_instance_max, sizeof(render_transform_buffer_t), skg_buffer_type_constant, skg_use_dynamic); |
| 214 | #if !defined(SKG_OPENGL) && (defined(_DEBUG) || defined(SK_GPU_LABELS)) |
| 215 | skg_buffer_name(&local.instance_buffer, "sk/render/instance_buffer"); |
| 216 | #endif |
| 217 | local.instance_list.resize(render_instance_max); |
| 218 | |
| 219 | // Setup a default camera |
| 220 | render_set_clip(local.clip_planes.x, local.clip_planes.y); |
| 221 | |
| 222 | // Set up resources for doing blit operations |
| 223 | local.blit_quad = mesh_find(default_id_mesh_screen_quad); |
| 224 | |
| 225 | // Create a default skybox |
| 226 | local.sky_mesh = mesh_create(); |
| 227 | vind_t inds [] = {2,1,0, 3,2,0}; |
| 228 | vert_t verts[] = { |
| 229 | vert_t{ {-1, 1,1}, {0,0,1}, {0,0}, {255,255,255,255} }, |
| 230 | vert_t{ { 1, 1,1}, {0,0,1}, {1,0}, {255,255,255,255} }, |
| 231 | vert_t{ { 1,-1,1}, {0,0,1}, {1,1}, {255,255,255,255} }, |
| 232 | vert_t{ {-1,-1,1}, {0,0,1}, {0,1}, {255,255,255,255} }, }; |
| 233 | mesh_set_data(local.sky_mesh, verts, _countof(verts), inds, _countof(inds)); |
| 234 | mesh_set_id (local.sky_mesh, "sk/render/skybox_mesh"); |
| 235 | |
| 236 | // Create a default skybox material |
| 237 | shader_t shader_sky = shader_find(default_id_shader_sky); |
| 238 | local.sky_mat_default = material_create(shader_sky); |
| 239 | material_set_id (local.sky_mat_default, "sk/render/skybox_material"); |
| 240 | material_set_queue_offset(local.sky_mat_default, 100); |
| 241 | material_set_depth_write (local.sky_mat_default, false); |
| 242 | material_set_depth_test (local.sky_mat_default, depth_test_less_or_eq); |
| 243 | render_set_skymaterial(local.sky_mat_default); |
nothing calls this directly
no test coverage detected