61 lines
3.0 KiB
TypeScript
61 lines
3.0 KiB
TypeScript
|
|
let const_data_screen_aligned_vb: gpu_buffer_t = null;
|
|
let const_data_screen_aligned_ib: gpu_buffer_t = null;
|
|
let const_data_skydome_vb: gpu_buffer_t = null;
|
|
let const_data_skydome_ib: gpu_buffer_t = null;
|
|
|
|
function const_data_create_screen_aligned_data() {
|
|
// Over-sized triangle
|
|
let data: f32[] = [-1.0, -1.0, 3.0, -1.0, -1.0, 3.0];
|
|
let indices: i32[] = [0, 1, 2];
|
|
|
|
let structure: gpu_vertex_structure_t = {};
|
|
gpu_vertex_struct_add(structure, "pos", vertex_data_t.F32_2X);
|
|
const_data_screen_aligned_vb = gpu_create_vertex_buffer(math_floor(data.length / math_floor(gpu_vertex_struct_size(structure) / 4)), structure);
|
|
let vertices: buffer_t = gpu_lock_vertex_buffer(const_data_screen_aligned_vb);
|
|
for (let i: i32 = 0; i < math_floor((vertices.length) / 4); ++i) {
|
|
buffer_set_f32(vertices, i * 4, data[i]);
|
|
}
|
|
gpu_vertex_buffer_unlock(const_data_screen_aligned_vb);
|
|
|
|
const_data_screen_aligned_ib = gpu_create_index_buffer(indices.length);
|
|
let id: u32_array_t = gpu_lock_index_buffer(const_data_screen_aligned_ib);
|
|
for (let i: i32 = 0; i < id.length; ++i) {
|
|
id[i] = indices[i];
|
|
}
|
|
gpu_index_buffer_unlock(const_data_screen_aligned_ib);
|
|
}
|
|
|
|
///include "const_data.h"
|
|
declare let _const_data_skydome_indices: i32_ptr;
|
|
declare let _const_data_skydome_indices_count: i32;
|
|
declare let _const_data_skydome_pos: f32_ptr;
|
|
declare let _const_data_skydome_pos_count: i32;
|
|
declare let _const_data_skydome_nor: f32_ptr;
|
|
declare let _const_data_skydome_nor_count: i32;
|
|
|
|
function const_data_create_skydome_data() {
|
|
let structure: gpu_vertex_structure_t = {};
|
|
gpu_vertex_struct_add(structure, "pos", vertex_data_t.F32_3X);
|
|
gpu_vertex_struct_add(structure, "nor", vertex_data_t.F32_3X);
|
|
let struct_length: i32 = math_floor(gpu_vertex_struct_size(structure) / 4);
|
|
const_data_skydome_vb = gpu_create_vertex_buffer(math_floor(_const_data_skydome_pos_count / 3), structure);
|
|
let vertices: buffer_t = gpu_lock_vertex_buffer(const_data_skydome_vb);
|
|
for (let i: i32 = 0; i < math_floor((vertices.length) / 4 / struct_length); ++i) {
|
|
buffer_set_f32(vertices, (i * struct_length) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3));
|
|
buffer_set_f32(vertices, (i * struct_length + 1) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3 + 1));
|
|
buffer_set_f32(vertices, (i * struct_length + 2) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3 + 2));
|
|
buffer_set_f32(vertices, (i * struct_length + 3) * 4, ARRAY_ACCESS(_const_data_skydome_nor, i * 3));
|
|
buffer_set_f32(vertices, (i * struct_length + 4) * 4, ARRAY_ACCESS(_const_data_skydome_nor, i * 3 + 1));
|
|
buffer_set_f32(vertices, (i * struct_length + 5) * 4, ARRAY_ACCESS(_const_data_skydome_nor, i * 3 + 2));
|
|
}
|
|
gpu_vertex_buffer_unlock(const_data_skydome_vb);
|
|
|
|
const_data_skydome_ib = gpu_create_index_buffer(_const_data_skydome_indices_count);
|
|
let id: u32_array_t = gpu_lock_index_buffer(const_data_skydome_ib);
|
|
for (let i: i32 = 0; i < id.length; ++i) {
|
|
id[i] = ARRAY_ACCESS(_const_data_skydome_indices, i);
|
|
}
|
|
gpu_index_buffer_unlock(const_data_skydome_ib);
|
|
}
|