const_data.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. let const_data_screen_aligned_vb: gpu_buffer_t = null;
  2. let const_data_screen_aligned_ib: gpu_buffer_t = null;
  3. let const_data_skydome_vb: gpu_buffer_t = null;
  4. let const_data_skydome_ib: gpu_buffer_t = null;
  5. function const_data_create_screen_aligned_data() {
  6. // Over-sized triangle
  7. let data: f32[] = [ -1.0, -1.0, 3.0, -1.0, -1.0, 3.0 ];
  8. let indices: i32[] = [ 0, 1, 2 ];
  9. let structure: gpu_vertex_structure_t = {};
  10. gpu_vertex_struct_add(structure, "pos", gpu_vertex_data_t.F32_2X);
  11. const_data_screen_aligned_vb = gpu_create_vertex_buffer(math_floor(data.length / math_floor(gpu_vertex_struct_size(structure) / 4)), structure);
  12. let vertices: buffer_t = gpu_lock_vertex_buffer(const_data_screen_aligned_vb);
  13. for (let i: i32 = 0; i < math_floor((vertices.length) / 4); ++i) {
  14. buffer_set_f32(vertices, i * 4, data[i]);
  15. }
  16. gpu_vertex_buffer_unlock(const_data_screen_aligned_vb);
  17. const_data_screen_aligned_ib = gpu_create_index_buffer(indices.length);
  18. let id: u32_array_t = gpu_lock_index_buffer(const_data_screen_aligned_ib);
  19. for (let i: i32 = 0; i < id.length; ++i) {
  20. id[i] = indices[i];
  21. }
  22. gpu_index_buffer_unlock(const_data_screen_aligned_ib);
  23. }
  24. /// include "const_data.h"
  25. declare let _const_data_skydome_indices: i32_ptr;
  26. declare let _const_data_skydome_indices_count: i32;
  27. declare let _const_data_skydome_pos: f32_ptr;
  28. declare let _const_data_skydome_pos_count: i32;
  29. declare let _const_data_skydome_nor: f32_ptr;
  30. declare let _const_data_skydome_nor_count: i32;
  31. function const_data_create_skydome_data() {
  32. let structure: gpu_vertex_structure_t = {};
  33. gpu_vertex_struct_add(structure, "pos", gpu_vertex_data_t.F32_3X);
  34. gpu_vertex_struct_add(structure, "nor", gpu_vertex_data_t.F32_3X);
  35. let struct_length: i32 = math_floor(gpu_vertex_struct_size(structure) / 4);
  36. const_data_skydome_vb = gpu_create_vertex_buffer(math_floor(_const_data_skydome_pos_count / 3), structure);
  37. let vertices: buffer_t = gpu_lock_vertex_buffer(const_data_skydome_vb);
  38. for (let i: i32 = 0; i < math_floor((vertices.length) / 4 / struct_length); ++i) {
  39. buffer_set_f32(vertices, (i * struct_length) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3));
  40. buffer_set_f32(vertices, (i * struct_length + 1) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3 + 1));
  41. buffer_set_f32(vertices, (i * struct_length + 2) * 4, ARRAY_ACCESS(_const_data_skydome_pos, i * 3 + 2));
  42. buffer_set_f32(vertices, (i * struct_length + 3) * 4, ARRAY_ACCESS(_const_data_skydome_nor, i * 3));
  43. buffer_set_f32(vertices, (i * struct_length + 4) * 4, ARRAY_ACCESS(_const_data_skydome_nor, i * 3 + 1));
  44. buffer_set_f32(vertices, (i * struct_length + 5) * 4, ARRAY_ACCESS(_const_data_skydome_nor, i * 3 + 2));
  45. }
  46. gpu_vertex_buffer_unlock(const_data_skydome_vb);
  47. const_data_skydome_ib = gpu_create_index_buffer(_const_data_skydome_indices_count);
  48. let id: u32_array_t = gpu_lock_index_buffer(const_data_skydome_ib);
  49. for (let i: i32 = 0; i < id.length; ++i) {
  50. id[i] = ARRAY_ACCESS(_const_data_skydome_indices, i);
  51. }
  52. gpu_index_buffer_unlock(const_data_skydome_ib);
  53. }