work towards normals
This commit is contained in:
parent
9b1f5894e8
commit
5729577126
@ -17,7 +17,4 @@ draw_editor_ui :: (theme: *GR.Overall_Theme) {
|
|||||||
tick_editor_ui :: () {
|
tick_editor_ui :: () {
|
||||||
tick_trile_editor();
|
tick_trile_editor();
|
||||||
tick_console();
|
tick_console();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,11 +38,13 @@ create_trixel_pipeline :: () {
|
|||||||
shader_desc := trixel_shader_desc(sg_query_backend());
|
shader_desc := trixel_shader_desc(sg_query_backend());
|
||||||
pipeline.shader = sg_make_shader(*shader_desc);
|
pipeline.shader = sg_make_shader(*shader_desc);
|
||||||
pipeline.layout.buffers[0].stride = 4*3;
|
pipeline.layout.buffers[0].stride = 4*3;
|
||||||
pipeline.layout.buffers[1].step_func = .PER_INSTANCE;
|
pipeline.layout.buffers[1].stride = 4*3;
|
||||||
|
pipeline.layout.buffers[2].step_func = .PER_INSTANCE;
|
||||||
|
|
||||||
pipeline.layout.attrs[ATTR_trixel_position] = .{ format = .FLOAT3, buffer_index = 0 };
|
pipeline.layout.attrs[ATTR_trixel_position] = .{ format = .FLOAT3, buffer_index = 0 };
|
||||||
pipeline.layout.attrs[ATTR_trixel_inst] = .{ format = .FLOAT4, buffer_index = 1 };
|
pipeline.layout.attrs[ATTR_trixel_normal] = .{ format = .FLOAT3, buffer_index = 1 };
|
||||||
pipeline.layout.attrs[ATTR_trixel_inst_col] = .{ format = .FLOAT4, buffer_index = 1 };
|
pipeline.layout.attrs[ATTR_trixel_inst] = .{ format = .FLOAT4, buffer_index = 2 };
|
||||||
|
pipeline.layout.attrs[ATTR_trixel_inst_col] = .{ format = .FLOAT4, buffer_index = 2 };
|
||||||
pipeline.index_type = .UINT16;
|
pipeline.index_type = .UINT16;
|
||||||
pipeline.depth = .{
|
pipeline.depth = .{
|
||||||
write_enabled = true,
|
write_enabled = true,
|
||||||
@ -58,58 +60,92 @@ create_trixel_pipeline :: () {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
verts : [24] Vector3;
|
|
||||||
verts[0] = .{ -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
|
||||||
verts[1] = .{ TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
|
||||||
verts[2] = .{ TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
|
||||||
verts[3] = .{ -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
|
||||||
|
|
||||||
verts[4] = .{ -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
vertices : [24]Vector3 = .[
|
||||||
verts[5] = .{ TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[6] = .{ TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[7] = .{ -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
|
.{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[8] = .{ -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[9] = .{ -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[10] = .{ -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[11] = .{ -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
|
.{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[12] = .{ TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[13] = .{ TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[14] = .{ TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[15] = .{ TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
|
.{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[16] = .{ -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[17] = .{ -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[18] = .{ TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[19] = .{ TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
|
.{TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[20] = .{ -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[21] = .{ -TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, -TRIXEL_SIZE/2},
|
||||||
verts[22] = .{ TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, -TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
verts[23] = .{ TRIXEL_SIZE_HALF, TRIXEL_SIZE_HALF, -TRIXEL_SIZE_HALF };
|
.{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, TRIXEL_SIZE/2},
|
||||||
|
.{-TRIXEL_SIZE/2, TRIXEL_SIZE/2, -TRIXEL_SIZE/2}
|
||||||
indices: [] u16 = .[
|
|
||||||
0, 2, 1, 0, 3, 2,
|
|
||||||
4, 6, 5, 4, 7, 6,
|
|
||||||
8, 10, 9, 8, 11, 10,
|
|
||||||
12, 14, 13, 12, 15, 14,
|
|
||||||
16, 18, 17, 16, 19, 18,
|
|
||||||
20, 22, 21, 20, 23, 22
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
normals : [24]Vector3 = .[
|
||||||
|
.{0.0, 0.0, 1.0},
|
||||||
|
.{0.0, 0.0, 1.0},
|
||||||
|
.{0.0, 0.0, 1.0},
|
||||||
|
.{0.0, 0.0, 1.0},
|
||||||
|
.{0.0, 0.0,-1.0},
|
||||||
|
.{0.0, 0.0,-1.0},
|
||||||
|
.{0.0, 0.0,-1.0},
|
||||||
|
.{0.0, 0.0,-1.0},
|
||||||
|
.{0.0, 1.0, 0.0},
|
||||||
|
.{0.0, 1.0, 0.0},
|
||||||
|
.{0.0, 1.0, 0.0},
|
||||||
|
.{0.0, 1.0, 0.0},
|
||||||
|
.{0.0,-1.0, 0.0},
|
||||||
|
.{0.0,-1.0, 0.0},
|
||||||
|
.{0.0,-1.0, 0.0},
|
||||||
|
.{0.0,-1.0, 0.0},
|
||||||
|
.{1.0, 0.0, 0.0},
|
||||||
|
.{1.0, 0.0, 0.0},
|
||||||
|
.{1.0, 0.0, 0.0},
|
||||||
|
.{1.0, 0.0, 0.0},
|
||||||
|
.{-1.0, 0.0, 0.0},
|
||||||
|
.{-1.0, 0.0, 0.0},
|
||||||
|
.{-1.0, 0.0, 0.0},
|
||||||
|
.{-1.0, 0.0, 0.0}
|
||||||
|
];
|
||||||
|
|
||||||
|
k : u16 = 0;
|
||||||
|
i : u16 = 0;
|
||||||
|
|
||||||
|
indices : [36]u16;
|
||||||
|
|
||||||
|
while i < 36 {
|
||||||
|
indices[i] = 4*k;
|
||||||
|
indices[i + 1] = 4*k + 1;
|
||||||
|
indices[i + 2] = 4*k + 2;
|
||||||
|
indices[i + 3] = 4*k;
|
||||||
|
indices[i + 4] = 4*k + 2;
|
||||||
|
indices[i + 5] = 4*k + 3;
|
||||||
|
k += 1;
|
||||||
|
i += 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pipeline.color_count = 1;
|
pipeline.color_count = 1;
|
||||||
pipeline.colors[0] = color_state;
|
pipeline.colors[0] = color_state;
|
||||||
|
|
||||||
gPipelines.trixel.pipeline = sg_make_pipeline(*pipeline);
|
gPipelines.trixel.pipeline = sg_make_pipeline(*pipeline);
|
||||||
|
|
||||||
ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 36 * 2 } };
|
ibuffer := sg_buffer_desc.{ type = .INDEXBUFFER, data = .{ ptr = indices.data, size = 36 * 2 } };
|
||||||
vbuffer := sg_buffer_desc.{ data = .{ ptr = verts.data, size = 24 * 3 * 4 } };
|
vbuffer := sg_buffer_desc.{ data = .{ ptr = vertices.data, size = 24 * 3 * 4 } };
|
||||||
|
nbuffer := sg_buffer_desc.{ data = .{ ptr = normals.data, size = 24 * 3 * 4 } };
|
||||||
instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 4096 * size_of(Position_Color)};
|
instance_buffer := sg_buffer_desc.{ usage = .STREAM, size = 4096 * size_of(Position_Color)};
|
||||||
|
|
||||||
gPipelines.trixel.bind.index_buffer = sg_make_buffer(*ibuffer);
|
gPipelines.trixel.bind.index_buffer = sg_make_buffer(*ibuffer);
|
||||||
gPipelines.trixel.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer);
|
gPipelines.trixel.bind.vertex_buffers[0] = sg_make_buffer(*vbuffer);
|
||||||
gPipelines.trixel.bind.vertex_buffers[1] = sg_make_buffer(*instance_buffer);
|
gPipelines.trixel.bind.vertex_buffers[1] = sg_make_buffer(*nbuffer);
|
||||||
|
gPipelines.trixel.bind.vertex_buffers[2] = sg_make_buffer(*instance_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
create_arbtri_pipeline :: () {
|
create_arbtri_pipeline :: () {
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
rm -rf .jai
|
rm -rf jai
|
||||||
|
mkdir jai
|
||||||
|
|
||||||
for filename in *.glsl; do
|
for filename in *.glsl; do
|
||||||
if [ -f "$filename" ]; then
|
if [ -f "$filename" ]; then
|
||||||
|
|||||||
@ -14,16 +14,18 @@
|
|||||||
Fragment Shader: fs_trixel
|
Fragment Shader: fs_trixel
|
||||||
Attributes:
|
Attributes:
|
||||||
ATTR_trixel_position => 0
|
ATTR_trixel_position => 0
|
||||||
ATTR_trixel_inst => 1
|
ATTR_trixel_normal => 1
|
||||||
ATTR_trixel_inst_col => 2
|
ATTR_trixel_inst => 2
|
||||||
|
ATTR_trixel_inst_col => 3
|
||||||
Bindings:
|
Bindings:
|
||||||
Uniform block 'vs_params':
|
Uniform block 'vs_params':
|
||||||
Jai struct: Vs_Params
|
Jai struct: Vs_Params
|
||||||
Bind slot: UB_vs_params => 0
|
Bind slot: UB_vs_params => 0
|
||||||
*/
|
*/
|
||||||
ATTR_trixel_position :: 0;
|
ATTR_trixel_position :: 0;
|
||||||
ATTR_trixel_inst :: 1;
|
ATTR_trixel_normal :: 1;
|
||||||
ATTR_trixel_inst_col :: 2;
|
ATTR_trixel_inst :: 2;
|
||||||
|
ATTR_trixel_inst_col :: 3;
|
||||||
UB_vs_params :: 0;
|
UB_vs_params :: 0;
|
||||||
Vs_Params :: struct {
|
Vs_Params :: struct {
|
||||||
mvp: [16]float;
|
mvp: [16]float;
|
||||||
@ -32,10 +34,11 @@ Vs_Params :: struct {
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
uniform vec4 vs_params[4];
|
uniform vec4 vs_params[4];
|
||||||
layout(location = 1) in vec4 inst;
|
layout(location = 2) in vec4 inst;
|
||||||
layout(location = 0) in vec4 position;
|
layout(location = 0) in vec4 position;
|
||||||
layout(location = 0) out vec4 color;
|
layout(location = 0) out vec4 color;
|
||||||
layout(location = 2) in vec4 inst_col;
|
layout(location = 3) in vec4 inst_col;
|
||||||
|
layout(location = 1) in vec4 normal;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
@ -48,25 +51,28 @@ vs_trixel_source_glsl430 := u8.[
|
|||||||
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e,
|
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x33,0x30,0x0a,0x0a,0x75,0x6e,
|
||||||
0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,
|
0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,
|
||||||
0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
|
0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
|
||||||
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,
|
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,
|
||||||
0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
|
0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
|
||||||
0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,
|
0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,
|
||||||
0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,
|
0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,
|
||||||
0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
|
0x6e,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
|
||||||
0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,
|
0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,
|
||||||
0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,
|
0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,
|
||||||
0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,
|
0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,
|
||||||
0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x0a,
|
0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x6c,
|
||||||
0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,
|
0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
|
||||||
0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
|
0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,
|
||||||
0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,
|
0x61,0x6c,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,
|
||||||
0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,
|
0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,
|
||||||
0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,
|
0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,
|
||||||
0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,
|
0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,
|
||||||
0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,
|
0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,
|
||||||
0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,
|
0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,
|
||||||
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,
|
0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,
|
||||||
0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x2e,0x78,0x79,0x7a,
|
||||||
|
0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,
|
||||||
|
0x72,0x20,0x3d,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x7d,0x0a,
|
||||||
|
0x0a,0x00,
|
||||||
];
|
];
|
||||||
/*
|
/*
|
||||||
#version 430
|
#version 430
|
||||||
@ -95,10 +101,11 @@ fs_trixel_source_glsl430 := u8.[
|
|||||||
#version 300 es
|
#version 300 es
|
||||||
|
|
||||||
uniform vec4 vs_params[4];
|
uniform vec4 vs_params[4];
|
||||||
layout(location = 1) in vec4 inst;
|
layout(location = 2) in vec4 inst;
|
||||||
layout(location = 0) in vec4 position;
|
layout(location = 0) in vec4 position;
|
||||||
out vec4 color;
|
out vec4 color;
|
||||||
layout(location = 2) in vec4 inst_col;
|
layout(location = 3) in vec4 inst_col;
|
||||||
|
layout(location = 1) in vec4 normal;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
@ -111,24 +118,27 @@ vs_trixel_source_glsl300es := u8.[
|
|||||||
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
|
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
|
||||||
0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,
|
0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,
|
||||||
0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
|
0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
|
||||||
0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,
|
0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,
|
||||||
0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x3b,0x0a,0x6c,
|
0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x3b,0x0a,0x6c,
|
||||||
0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
|
0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
|
||||||
0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,
|
0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,
|
||||||
0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,
|
0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x63,
|
||||||
0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,
|
0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,
|
||||||
0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,
|
0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,
|
||||||
0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x0a,0x76,0x6f,
|
0x63,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x6c,0x61,0x79,
|
||||||
0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
|
0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,
|
||||||
0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x61,
|
0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,
|
||||||
0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,
|
0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,
|
||||||
0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x76,
|
0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
|
||||||
0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,0x2c,0x20,0x76,0x73,0x5f,
|
0x20,0x3d,0x20,0x6d,0x61,0x74,0x34,0x28,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,
|
||||||
0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,
|
0x73,0x5b,0x30,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,
|
||||||
0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x79,0x7a,0x20,0x2b,
|
0x31,0x5d,0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,0x5d,
|
||||||
0x20,0x69,0x6e,0x73,0x74,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,
|
0x2c,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,
|
||||||
0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x73,
|
0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,
|
||||||
0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
0x78,0x79,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x73,0x74,0x2e,0x78,0x79,0x7a,0x2c,0x20,
|
||||||
|
0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,
|
||||||
|
0x3d,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
|
||||||
|
|
||||||
];
|
];
|
||||||
/*
|
/*
|
||||||
#version 300 es
|
#version 300 es
|
||||||
@ -177,8 +187,8 @@ fs_trixel_source_glsl300es := u8.[
|
|||||||
struct main0_in
|
struct main0_in
|
||||||
{
|
{
|
||||||
float4 position [[attribute(0)]];
|
float4 position [[attribute(0)]];
|
||||||
float4 inst [[attribute(1)]];
|
float4 inst [[attribute(2)]];
|
||||||
float4 inst_col [[attribute(2)]];
|
float4 inst_col [[attribute(3)]];
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex main0_out main0(main0_in in [[stage_in]], constant vs_params& _26 [[buffer(0)]])
|
vertex main0_out main0(main0_in in [[stage_in]], constant vs_params& _26 [[buffer(0)]])
|
||||||
@ -209,9 +219,9 @@ vs_trixel_source_metal_macos := u8.[
|
|||||||
0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,
|
0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,
|
||||||
0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
|
0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
|
||||||
0x34,0x20,0x69,0x6e,0x73,0x74,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,
|
0x34,0x20,0x69,0x6e,0x73,0x74,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,
|
||||||
0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
|
0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
|
||||||
0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x20,0x5b,0x5b,0x61,
|
0x61,0x74,0x34,0x20,0x69,0x6e,0x73,0x74,0x5f,0x63,0x6f,0x6c,0x20,0x5b,0x5b,0x61,
|
||||||
0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,
|
0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x33,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,
|
||||||
0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
|
0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
|
||||||
0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,
|
0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,
|
||||||
0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,
|
0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,
|
||||||
@ -287,9 +297,11 @@ trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
|
|||||||
desc.attrs[0].base_type = .FLOAT;
|
desc.attrs[0].base_type = .FLOAT;
|
||||||
desc.attrs[0].glsl_name = "position";
|
desc.attrs[0].glsl_name = "position";
|
||||||
desc.attrs[1].base_type = .FLOAT;
|
desc.attrs[1].base_type = .FLOAT;
|
||||||
desc.attrs[1].glsl_name = "inst";
|
desc.attrs[1].glsl_name = "normal";
|
||||||
desc.attrs[2].base_type = .FLOAT;
|
desc.attrs[2].base_type = .FLOAT;
|
||||||
desc.attrs[2].glsl_name = "inst_col";
|
desc.attrs[2].glsl_name = "inst";
|
||||||
|
desc.attrs[3].base_type = .FLOAT;
|
||||||
|
desc.attrs[3].glsl_name = "inst_col";
|
||||||
desc.uniform_blocks[0].stage = .VERTEX;
|
desc.uniform_blocks[0].stage = .VERTEX;
|
||||||
desc.uniform_blocks[0].layout = .STD140;
|
desc.uniform_blocks[0].layout = .STD140;
|
||||||
desc.uniform_blocks[0].size = 64;
|
desc.uniform_blocks[0].size = 64;
|
||||||
@ -304,9 +316,11 @@ trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
|
|||||||
desc.attrs[0].base_type = .FLOAT;
|
desc.attrs[0].base_type = .FLOAT;
|
||||||
desc.attrs[0].glsl_name = "position";
|
desc.attrs[0].glsl_name = "position";
|
||||||
desc.attrs[1].base_type = .FLOAT;
|
desc.attrs[1].base_type = .FLOAT;
|
||||||
desc.attrs[1].glsl_name = "inst";
|
desc.attrs[1].glsl_name = "normal";
|
||||||
desc.attrs[2].base_type = .FLOAT;
|
desc.attrs[2].base_type = .FLOAT;
|
||||||
desc.attrs[2].glsl_name = "inst_col";
|
desc.attrs[2].glsl_name = "inst";
|
||||||
|
desc.attrs[3].base_type = .FLOAT;
|
||||||
|
desc.attrs[3].glsl_name = "inst_col";
|
||||||
desc.uniform_blocks[0].stage = .VERTEX;
|
desc.uniform_blocks[0].stage = .VERTEX;
|
||||||
desc.uniform_blocks[0].layout = .STD140;
|
desc.uniform_blocks[0].layout = .STD140;
|
||||||
desc.uniform_blocks[0].size = 64;
|
desc.uniform_blocks[0].size = 64;
|
||||||
@ -321,6 +335,7 @@ trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc {
|
|||||||
desc.attrs[0].base_type = .FLOAT;
|
desc.attrs[0].base_type = .FLOAT;
|
||||||
desc.attrs[1].base_type = .FLOAT;
|
desc.attrs[1].base_type = .FLOAT;
|
||||||
desc.attrs[2].base_type = .FLOAT;
|
desc.attrs[2].base_type = .FLOAT;
|
||||||
|
desc.attrs[3].base_type = .FLOAT;
|
||||||
desc.uniform_blocks[0].stage = .VERTEX;
|
desc.uniform_blocks[0].stage = .VERTEX;
|
||||||
desc.uniform_blocks[0].layout = .STD140;
|
desc.uniform_blocks[0].layout = .STD140;
|
||||||
desc.uniform_blocks[0].size = 64;
|
desc.uniform_blocks[0].size = 64;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
@vs vs_trixel
|
@vs vs_trixel
|
||||||
|
|
||||||
in vec4 position;
|
in vec4 position;
|
||||||
|
in vec4 normal;
|
||||||
in vec4 inst;
|
in vec4 inst;
|
||||||
in vec4 inst_col;
|
in vec4 inst_col;
|
||||||
|
|
||||||
@ -10,21 +11,24 @@ layout(binding=0) uniform vs_params {
|
|||||||
|
|
||||||
|
|
||||||
out vec4 color;
|
out vec4 color;
|
||||||
|
out vec4 fnormal;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec3 instancepos = inst.xyz;
|
vec3 instancepos = inst.xyz;
|
||||||
gl_Position = mvp * (vec4(position.xyz + instancepos, 1.0));
|
gl_Position = mvp * (vec4(position.xyz + instancepos, 1.0));
|
||||||
|
fnormal = normal;
|
||||||
color = inst_col;
|
color = inst_col;
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@fs fs_trixel
|
@fs fs_trixel
|
||||||
in vec4 color;
|
in vec4 color;
|
||||||
|
in vec4 fnormal;
|
||||||
out vec4 frag_color;
|
out vec4 frag_color;
|
||||||
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
frag_color = color;
|
frag_color = color * 0.1 + fnormal;
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|||||||
8
src/shapes.jai
Normal file
8
src/shapes.jai
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Shape :: struct {
|
||||||
|
verts : [..]Vector4;
|
||||||
|
normals : [..]Vector4;
|
||||||
|
}
|
||||||
|
|
||||||
|
create_cube :: () {
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user