Updates for breaking changes (nov 7 Sokol pr)

This commit is contained in:
2024-11-26 10:13:10 -05:00
parent 137eea9da4
commit 55a4c3dee6
7 changed files with 369 additions and 349 deletions

View File

@@ -65,14 +65,14 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
screen_shader = gfx.make_shader(draw_text_shader_desc(backend) ) screen_shader = gfx.make_shader(draw_text_shader_desc(backend) )
draw_list_vbuf = gfx.make_buffer( Buffer_Desciption { draw_list_vbuf = gfx.make_buffer( Buffer_Desciption {
size = size_of([4]f32) * vert_cap, size = cast(uint)(size_of([4]f32) * vert_cap),
usage = Buffer_Usage.STREAM, usage = Buffer_Usage.STREAM,
type = Buffer_Type.VERTEXBUFFER, type = Buffer_Type.VERTEXBUFFER,
}) })
assert( gfx.query_buffer_state( draw_list_vbuf) < Resource_State.FAILED, "Failed to make draw_list_vbuf" ) assert( gfx.query_buffer_state( draw_list_vbuf) < Resource_State.FAILED, "Failed to make draw_list_vbuf" )
draw_list_ibuf = gfx.make_buffer( Buffer_Desciption { draw_list_ibuf = gfx.make_buffer( Buffer_Desciption {
size = size_of(u32) * index_cap, size = cast(uint)(size_of(u32) * index_cap),
usage = Buffer_Usage.STREAM, usage = Buffer_Usage.STREAM,
type = Buffer_Type.INDEXBUFFER, type = Buffer_Type.INDEXBUFFER,
}) })
@@ -85,12 +85,12 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
vs_layout : Vertex_Layout_State vs_layout : Vertex_Layout_State
{ {
using vs_layout using vs_layout
attrs[ATTR_render_glyph_vs_v_position] = Vertex_Attribute_State { attrs[ATTR_render_glyph_v_position] = Vertex_Attribute_State {
format = Vertex_Format.FLOAT2, format = Vertex_Format.FLOAT2,
offset = 0, offset = 0,
buffer_index = 0, buffer_index = 0,
} }
attrs[ATTR_render_glyph_vs_v_texture] = Vertex_Attribute_State { attrs[ATTR_render_glyph_v_texture] = Vertex_Attribute_State {
format = Vertex_Format.FLOAT2, format = Vertex_Format.FLOAT2,
offset = size_of(ve.Vec2), offset = size_of(ve.Vec2),
buffer_index = 0, buffer_index = 0,
@@ -221,12 +221,12 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
vs_layout : Vertex_Layout_State vs_layout : Vertex_Layout_State
{ {
using vs_layout using vs_layout
attrs[ATTR_blit_atlas_vs_v_position] = Vertex_Attribute_State { attrs[ATTR_blit_atlas_v_position] = Vertex_Attribute_State {
format = Vertex_Format.FLOAT2, format = Vertex_Format.FLOAT2,
offset = 0, offset = 0,
buffer_index = 0, buffer_index = 0,
} }
attrs[ATTR_blit_atlas_vs_v_texture] = Vertex_Attribute_State { attrs[ATTR_blit_atlas_v_texture] = Vertex_Attribute_State {
format = Vertex_Format.FLOAT2, format = Vertex_Format.FLOAT2,
offset = size_of(ve.Vec2), offset = size_of(ve.Vec2),
buffer_index = 0, buffer_index = 0,
@@ -358,12 +358,12 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
vs_layout : Vertex_Layout_State vs_layout : Vertex_Layout_State
{ {
using vs_layout using vs_layout
attrs[ATTR_draw_text_vs_v_position] = Vertex_Attribute_State { attrs[ATTR_draw_text_v_position] = Vertex_Attribute_State {
format = Vertex_Format.FLOAT2, format = Vertex_Format.FLOAT2,
offset = 0, offset = 0,
buffer_index = 0, buffer_index = 0,
} }
attrs[ATTR_draw_text_vs_v_texture] = Vertex_Attribute_State { attrs[ATTR_draw_text_v_texture] = Vertex_Attribute_State {
format = Vertex_Format.FLOAT2, format = Vertex_Format.FLOAT2,
offset = size_of(ve.Vec2), offset = size_of(ve.Vec2),
buffer_index = 0, buffer_index = 0,
@@ -456,8 +456,8 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
vbuf_layer_slice, ibuf_layer_slice, calls_layer_slice := ve.get_draw_list_layer( ve_ctx, optimize_before_returning = true ) vbuf_layer_slice, ibuf_layer_slice, calls_layer_slice := ve.get_draw_list_layer( ve_ctx, optimize_before_returning = true )
vbuf_ve_range := Range{ raw_data(vbuf_layer_slice), cast(u64) len(vbuf_layer_slice) * size_of(ve.Vertex) } vbuf_ve_range := Range{ raw_data(vbuf_layer_slice), cast(uint) len(vbuf_layer_slice) * size_of(ve.Vertex) }
ibuf_ve_range := Range{ raw_data(ibuf_layer_slice), cast(u64) len(ibuf_layer_slice) * size_of(u32) } ibuf_ve_range := Range{ raw_data(ibuf_layer_slice), cast(uint) len(ibuf_layer_slice) * size_of(u32) }
gfx.append_buffer( draw_list_vbuf, vbuf_ve_range ) gfx.append_buffer( draw_list_vbuf, vbuf_ve_range )
gfx.append_buffer( draw_list_ibuf, ibuf_ve_range ) gfx.append_buffer( draw_list_ibuf, ibuf_ve_range )
@@ -508,7 +508,6 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
}, },
index_buffer = draw_list_ibuf, index_buffer = draw_list_ibuf,
index_buffer_offset = 0, index_buffer_offset = 0,
fs = {},
} }
gfx.apply_bindings( bindings ) gfx.apply_bindings( bindings )
@@ -536,7 +535,7 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
gfx.apply_pipeline( atlas_pipeline ) gfx.apply_pipeline( atlas_pipeline )
fs_uniform := Blit_Atlas_Fs_Params { region = cast(i32) draw_call.region } fs_uniform := Blit_Atlas_Fs_Params { region = cast(i32) draw_call.region }
gfx.apply_uniforms( Shader_Stage.FS, SLOT_blit_atlas_fs_params, Range { & fs_uniform, size_of(Blit_Atlas_Fs_Params) }) gfx.apply_uniforms( UB_blit_atlas_fs_params, Range { & fs_uniform, size_of(Blit_Atlas_Fs_Params) })
gfx.apply_bindings(Bindings { gfx.apply_bindings(Bindings {
vertex_buffers = { vertex_buffers = {
@@ -547,10 +546,8 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
}, },
index_buffer = draw_list_ibuf, index_buffer = draw_list_ibuf,
index_buffer_offset = 0, index_buffer_offset = 0,
fs = { images = { IMG_blit_atlas_src_texture = glyph_rt_color, },
images = { SLOT_blit_atlas_src_texture = glyph_rt_color, }, samplers = { SMP_blit_atlas_src_sampler = glyph_rt_sampler, },
samplers = { SLOT_blit_atlas_src_sampler = glyph_rt_sampler, },
},
}) })
// 3. Use the atlas to then render the text. // 3. Use the atlas to then render the text.
@@ -583,7 +580,7 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
src_rt = glyph_rt_color src_rt = glyph_rt_color
src_sampler = glyph_rt_sampler src_sampler = glyph_rt_sampler
} }
gfx.apply_uniforms( Shader_Stage.FS, SLOT_draw_text_fs_params, Range { & fs_target_uniform, size_of(Draw_Text_Fs_Params) }) gfx.apply_uniforms( UB_draw_text_fs_params, Range { & fs_target_uniform, size_of(Draw_Text_Fs_Params) })
gfx.apply_bindings(Bindings { gfx.apply_bindings(Bindings {
vertex_buffers = { vertex_buffers = {
@@ -594,10 +591,8 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
}, },
index_buffer = draw_list_ibuf, index_buffer = draw_list_ibuf,
index_buffer_offset = 0, index_buffer_offset = 0,
fs = { images = { IMG_draw_text_src_texture = src_rt, },
images = { SLOT_draw_text_src_texture = src_rt, }, samplers = { SMP_draw_text_src_sampler = src_sampler, },
samplers = { SLOT_draw_text_src_sampler = src_sampler, },
},
}) })
} }

View File

@@ -12,31 +12,29 @@ import sg "thirdparty:sokol/gfx"
========= =========
Shader program: 'blit_atlas': Shader program: 'blit_atlas':
Get shader desc: blit_atlas_shader_desc(sg.query_backend()) Get shader desc: blit_atlas_shader_desc(sg.query_backend())
Vertex shader: blit_atlas_vs Vertex Shader: blit_atlas_vs
Fragment Shader: blit_atlas_fs
Attributes: Attributes:
ATTR_blit_atlas_vs_v_position => 0 ATTR_blit_atlas_v_position => 0
ATTR_blit_atlas_vs_v_texture => 1 ATTR_blit_atlas_v_texture => 1
Fragment shader: blit_atlas_fs Bindings:
Uniform block 'blit_atlas_fs_params': Uniform block 'blit_atlas_fs_params':
Odin struct: Blit_Atlas_Fs_Params Odin struct: Blit_Atlas_Fs_Params
Bind slot: SLOT_blit_atlas_fs_params => 0 Bind slot: UB_blit_atlas_fs_params => 0
Image 'blit_atlas_src_texture': Image 'blit_atlas_src_texture':
Image type: ._2D Image type: ._2D
Sample type: .FLOAT Sample type: .FLOAT
Multisampled: false Multisampled: false
Bind slot: SLOT_blit_atlas_src_texture => 0 Bind slot: IMG_blit_atlas_src_texture => 0
Sampler 'blit_atlas_src_sampler': Sampler 'blit_atlas_src_sampler':
Type: .FILTERING Type: .FILTERING
Bind slot: SLOT_blit_atlas_src_sampler => 0 Bind slot: SMP_blit_atlas_src_sampler => 0
Image Sampler Pair 'blit_atlas_src_texture_blit_atlas_src_sampler':
Image: blit_atlas_src_texture
Sampler: blit_atlas_src_sampler
*/ */
ATTR_blit_atlas_vs_v_position :: 0 ATTR_blit_atlas_v_position :: 0
ATTR_blit_atlas_vs_v_texture :: 1 ATTR_blit_atlas_v_texture :: 1
SLOT_blit_atlas_fs_params :: 0 UB_blit_atlas_fs_params :: 0
SLOT_blit_atlas_src_texture :: 0 IMG_blit_atlas_src_texture :: 0
SLOT_blit_atlas_src_sampler :: 0 SMP_blit_atlas_src_sampler :: 0
Blit_Atlas_Fs_Params :: struct #align(16) { Blit_Atlas_Fs_Params :: struct #align(16) {
using _: struct #packed { using _: struct #packed {
region: i32, region: i32,
@@ -57,7 +55,7 @@ Blit_Atlas_Fs_Params :: struct #align(16) {
} }
*/ */
@(private) @(private="file")
blit_atlas_vs_source_glsl410 := [235]u8 { blit_atlas_vs_source_glsl410 := [235]u8 {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61, 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
@@ -129,7 +127,7 @@ blit_atlas_vs_source_glsl410 := [235]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_fs_source_glsl410 := [1700]u8 { blit_atlas_fs_source_glsl410 := [1700]u8 {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e, 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
0x69,0x66,0x6f,0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,0x62,0x6c,0x69,0x74, 0x69,0x66,0x6f,0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,0x62,0x6c,0x69,0x74,
@@ -253,7 +251,7 @@ blit_atlas_fs_source_glsl410 := [1700]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_vs_source_glsl300es := [217]u8 { blit_atlas_vs_source_glsl300es := [217]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,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61, 0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,
@@ -326,7 +324,7 @@ blit_atlas_vs_source_glsl300es := [217]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_fs_source_glsl300es := [1806]u8 { blit_atlas_fs_source_glsl300es := [1806]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,
0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
@@ -477,7 +475,7 @@ blit_atlas_fs_source_glsl300es := [1806]u8 {
return stage_output; return stage_output;
} }
*/ */
@(private) @(private="file")
blit_atlas_vs_source_hlsl4 := [705]u8 { blit_atlas_vs_source_hlsl4 := [705]u8 {
0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c, 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,
0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69, 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,
@@ -600,7 +598,7 @@ blit_atlas_vs_source_hlsl4 := [705]u8 {
return stage_output; return stage_output;
} }
*/ */
@(private) @(private="file")
blit_atlas_fs_source_hlsl4 := [2107]u8 { blit_atlas_fs_source_hlsl4 := [2107]u8 {
0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x62,0x6c,0x69,0x74,0x5f,0x61,0x74,0x6c, 0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x62,0x6c,0x69,0x74,0x5f,0x61,0x74,0x6c,
0x61,0x73,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3a,0x20,0x72, 0x61,0x73,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3a,0x20,0x72,
@@ -762,7 +760,7 @@ blit_atlas_fs_source_hlsl4 := [2107]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_vs_source_metal_macos := [473]u8 { blit_atlas_vs_source_metal_macos := [473]u8 {
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
@@ -866,7 +864,7 @@ blit_atlas_vs_source_metal_macos := [473]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_fs_source_metal_macos := [2373]u8 { blit_atlas_fs_source_metal_macos := [2373]u8 {
0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69, 0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x63,0x6c,0x61,0x6e,0x67,0x20,0x64,0x69,
0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64, 0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x20,0x69,0x67,0x6e,0x6f,0x72,0x65,0x64,
@@ -1054,7 +1052,7 @@ blit_atlas_fs_source_metal_macos := [2373]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_vs_source_wgsl := [698]u8 { blit_atlas_vs_source_wgsl := [698]u8 {
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
@@ -1109,11 +1107,11 @@ blit_atlas_vs_source_wgsl := [698]u8 {
region : i32, region : i32,
} }
@group(1) @binding(48) var blit_atlas_src_texture : texture_2d<f32>; @group(1) @binding(64) var blit_atlas_src_texture : texture_2d<f32>;
@group(1) @binding(64) var blit_atlas_src_sampler : sampler; @group(1) @binding(80) var blit_atlas_src_sampler : sampler;
@group(0) @binding(4) var<uniform> x_88 : blit_atlas_fs_params; @group(0) @binding(8) var<uniform> x_88 : blit_atlas_fs_params;
var<private> uv_1 : vec2f; var<private> uv_1 : vec2f;
@@ -1219,7 +1217,7 @@ blit_atlas_vs_source_wgsl := [698]u8 {
} }
*/ */
@(private) @(private="file")
blit_atlas_fs_source_wgsl := [3640]u8 { blit_atlas_fs_source_wgsl := [3640]u8 {
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
@@ -1229,15 +1227,15 @@ blit_atlas_fs_source_wgsl := [3640]u8 {
0x73,0x65,0x74,0x28,0x30,0x29,0x20,0x2a,0x2f,0x0a,0x20,0x20,0x72,0x65,0x67,0x69, 0x73,0x65,0x74,0x28,0x30,0x29,0x20,0x2a,0x2f,0x0a,0x20,0x20,0x72,0x65,0x67,0x69,
0x6f,0x6e,0x20,0x3a,0x20,0x69,0x33,0x32,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x67,0x72, 0x6f,0x6e,0x20,0x3a,0x20,0x69,0x33,0x32,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x67,0x72,
0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28, 0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,
0x34,0x38,0x29,0x20,0x76,0x61,0x72,0x20,0x62,0x6c,0x69,0x74,0x5f,0x61,0x74,0x6c, 0x36,0x34,0x29,0x20,0x76,0x61,0x72,0x20,0x62,0x6c,0x69,0x74,0x5f,0x61,0x74,0x6c,
0x61,0x73,0x5f,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x20,0x3a, 0x61,0x73,0x5f,0x73,0x72,0x63,0x5f,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x20,0x3a,
0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e, 0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,
0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69, 0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,
0x6e,0x64,0x69,0x6e,0x67,0x28,0x36,0x34,0x29,0x20,0x76,0x61,0x72,0x20,0x62,0x6c, 0x6e,0x64,0x69,0x6e,0x67,0x28,0x38,0x30,0x29,0x20,0x76,0x61,0x72,0x20,0x62,0x6c,
0x69,0x74,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x73,0x72,0x63,0x5f,0x73,0x61,0x6d, 0x69,0x74,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x73,0x72,0x63,0x5f,0x73,0x61,0x6d,
0x70,0x6c,0x65,0x72,0x20,0x3a,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a, 0x70,0x6c,0x65,0x72,0x20,0x3a,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,
0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,0x20,0x40,0x62,0x69,0x6e,0x64, 0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,
0x69,0x6e,0x67,0x28,0x34,0x29,0x20,0x76,0x61,0x72,0x3c,0x75,0x6e,0x69,0x66,0x6f, 0x69,0x6e,0x67,0x28,0x38,0x29,0x20,0x76,0x61,0x72,0x3c,0x75,0x6e,0x69,0x66,0x6f,
0x72,0x6d,0x3e,0x20,0x78,0x5f,0x38,0x38,0x20,0x3a,0x20,0x62,0x6c,0x69,0x74,0x5f, 0x72,0x6d,0x3e,0x20,0x78,0x5f,0x38,0x38,0x20,0x3a,0x20,0x62,0x6c,0x69,0x74,0x5f,
0x61,0x74,0x6c,0x61,0x73,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x3b, 0x61,0x74,0x6c,0x61,0x73,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x3b,
0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x75, 0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x75,
@@ -1455,103 +1453,117 @@ blit_atlas_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
desc.label = "blit_atlas_shader" desc.label = "blit_atlas_shader"
#partial switch backend { #partial switch backend {
case .GLCORE: case .GLCORE:
desc.attrs[0].name = "v_position" desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_glsl410
desc.attrs[1].name = "v_texture" desc.vertex_func.entry = "main"
desc.vs.source = transmute(cstring)&blit_atlas_vs_source_glsl410 desc.fragment_func.source = transmute(cstring)&blit_atlas_fs_source_glsl410
desc.vs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.source = transmute(cstring)&blit_atlas_fs_source_glsl410 desc.attrs[0].glsl_name = "v_position"
desc.fs.entry = "main" desc.attrs[1].glsl_name = "v_texture"
desc.fs.uniform_blocks[0].size = 16 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.uniform_blocks[0].uniforms[0].name = "blit_atlas_fs_params" desc.uniform_blocks[0].size = 16
desc.fs.uniform_blocks[0].uniforms[0].type = .INT4 desc.uniform_blocks[0].glsl_uniforms[0].type = .INT4
desc.fs.uniform_blocks[0].uniforms[0].array_count = 1 desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1
desc.fs.images[0].used = true desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "blit_atlas_fs_params"
desc.fs.images[0].multisampled = false desc.images[0].stage = .FRAGMENT
desc.fs.images[0].image_type = ._2D desc.images[0].multisampled = false
desc.fs.images[0].sample_type = .FLOAT desc.images[0].image_type = ._2D
desc.fs.samplers[0].used = true desc.images[0].sample_type = .FLOAT
desc.fs.samplers[0].sampler_type = .FILTERING desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].used = true desc.samplers[0].sampler_type = .FILTERING
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.image_sampler_pairs[0].image_slot = 0
desc.fs.image_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler" desc.image_sampler_pairs[0].sampler_slot = 0
desc.image_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler"
case .GLES3: case .GLES3:
desc.attrs[0].name = "v_position" desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_glsl300es
desc.attrs[1].name = "v_texture" desc.vertex_func.entry = "main"
desc.vs.source = transmute(cstring)&blit_atlas_vs_source_glsl300es desc.fragment_func.source = transmute(cstring)&blit_atlas_fs_source_glsl300es
desc.vs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.source = transmute(cstring)&blit_atlas_fs_source_glsl300es desc.attrs[0].glsl_name = "v_position"
desc.fs.entry = "main" desc.attrs[1].glsl_name = "v_texture"
desc.fs.uniform_blocks[0].size = 16 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.uniform_blocks[0].uniforms[0].name = "blit_atlas_fs_params" desc.uniform_blocks[0].size = 16
desc.fs.uniform_blocks[0].uniforms[0].type = .INT4 desc.uniform_blocks[0].glsl_uniforms[0].type = .INT4
desc.fs.uniform_blocks[0].uniforms[0].array_count = 1 desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1
desc.fs.images[0].used = true desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "blit_atlas_fs_params"
desc.fs.images[0].multisampled = false desc.images[0].stage = .FRAGMENT
desc.fs.images[0].image_type = ._2D desc.images[0].multisampled = false
desc.fs.images[0].sample_type = .FLOAT desc.images[0].image_type = ._2D
desc.fs.samplers[0].used = true desc.images[0].sample_type = .FLOAT
desc.fs.samplers[0].sampler_type = .FILTERING desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].used = true desc.samplers[0].sampler_type = .FILTERING
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.image_sampler_pairs[0].image_slot = 0
desc.fs.image_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler" desc.image_sampler_pairs[0].sampler_slot = 0
desc.image_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler"
case .D3D11: case .D3D11:
desc.attrs[0].sem_name = "TEXCOORD" desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_hlsl4
desc.attrs[0].sem_index = 0 desc.vertex_func.d3d11_target = "vs_4_0"
desc.attrs[1].sem_name = "TEXCOORD" desc.vertex_func.entry = "main"
desc.attrs[1].sem_index = 1 desc.fragment_func.source = transmute(cstring)&blit_atlas_fs_source_hlsl4
desc.vs.source = transmute(cstring)&blit_atlas_vs_source_hlsl4 desc.fragment_func.d3d11_target = "ps_4_0"
desc.vs.d3d11_target = "vs_4_0" desc.fragment_func.entry = "main"
desc.vs.entry = "main" desc.attrs[0].hlsl_sem_name = "TEXCOORD"
desc.fs.source = transmute(cstring)&blit_atlas_fs_source_hlsl4 desc.attrs[0].hlsl_sem_index = 0
desc.fs.d3d11_target = "ps_4_0" desc.attrs[1].hlsl_sem_name = "TEXCOORD"
desc.fs.entry = "main" desc.attrs[1].hlsl_sem_index = 1
desc.fs.uniform_blocks[0].size = 16 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.images[0].used = true desc.uniform_blocks[0].size = 16
desc.fs.images[0].multisampled = false desc.uniform_blocks[0].hlsl_register_b_n = 0
desc.fs.images[0].image_type = ._2D desc.images[0].stage = .FRAGMENT
desc.fs.images[0].sample_type = .FLOAT desc.images[0].multisampled = false
desc.fs.samplers[0].used = true desc.images[0].image_type = ._2D
desc.fs.samplers[0].sampler_type = .FILTERING desc.images[0].sample_type = .FLOAT
desc.fs.image_sampler_pairs[0].used = true desc.images[0].hlsl_register_t_n = 0
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.samplers[0].sampler_type = .FILTERING
desc.samplers[0].hlsl_register_s_n = 0
desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.image_sampler_pairs[0].image_slot = 0
desc.image_sampler_pairs[0].sampler_slot = 0
case .METAL_MACOS: case .METAL_MACOS:
desc.vs.source = transmute(cstring)&blit_atlas_vs_source_metal_macos desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_metal_macos
desc.vs.entry = "main0" desc.vertex_func.entry = "main0"
desc.fs.source = transmute(cstring)&blit_atlas_fs_source_metal_macos desc.fragment_func.source = transmute(cstring)&blit_atlas_fs_source_metal_macos
desc.fs.entry = "main0" desc.fragment_func.entry = "main0"
desc.fs.uniform_blocks[0].size = 16 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.images[0].used = true desc.uniform_blocks[0].size = 16
desc.fs.images[0].multisampled = false desc.uniform_blocks[0].msl_buffer_n = 0
desc.fs.images[0].image_type = ._2D desc.images[0].stage = .FRAGMENT
desc.fs.images[0].sample_type = .FLOAT desc.images[0].multisampled = false
desc.fs.samplers[0].used = true desc.images[0].image_type = ._2D
desc.fs.samplers[0].sampler_type = .FILTERING desc.images[0].sample_type = .FLOAT
desc.fs.image_sampler_pairs[0].used = true desc.images[0].msl_texture_n = 0
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.samplers[0].sampler_type = .FILTERING
desc.samplers[0].msl_sampler_n = 0
desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.image_sampler_pairs[0].image_slot = 0
desc.image_sampler_pairs[0].sampler_slot = 0
case .WGPU: case .WGPU:
desc.vs.source = transmute(cstring)&blit_atlas_vs_source_wgsl desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_wgsl
desc.vs.entry = "main" desc.vertex_func.entry = "main"
desc.fs.source = transmute(cstring)&blit_atlas_fs_source_wgsl desc.fragment_func.source = transmute(cstring)&blit_atlas_fs_source_wgsl
desc.fs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.uniform_blocks[0].size = 16 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.images[0].used = true desc.uniform_blocks[0].size = 16
desc.fs.images[0].multisampled = false desc.uniform_blocks[0].wgsl_group0_binding_n = 8
desc.fs.images[0].image_type = ._2D desc.images[0].stage = .FRAGMENT
desc.fs.images[0].sample_type = .FLOAT desc.images[0].multisampled = false
desc.fs.samplers[0].used = true desc.images[0].image_type = ._2D
desc.fs.samplers[0].sampler_type = .FILTERING desc.images[0].sample_type = .FLOAT
desc.fs.image_sampler_pairs[0].used = true desc.images[0].wgsl_group1_binding_n = 64
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.samplers[0].sampler_type = .FILTERING
desc.samplers[0].wgsl_group1_binding_n = 80
desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.image_sampler_pairs[0].image_slot = 0
desc.image_sampler_pairs[0].sampler_slot = 0
} }
return desc return desc
} }

View File

@@ -11,10 +11,10 @@
in vec2 uv; in vec2 uv;
out vec4 frag_color; out vec4 frag_color;
uniform texture2D blit_atlas_src_texture; layout(binding = 0) uniform texture2D blit_atlas_src_texture;
uniform sampler blit_atlas_src_sampler; layout(binding = 0) uniform sampler blit_atlas_src_sampler;
uniform blit_atlas_fs_params { layout(binding = 0) uniform blit_atlas_fs_params {
int region; int region;
}; };

View File

@@ -12,31 +12,29 @@ import sg "thirdparty:sokol/gfx"
========= =========
Shader program: 'draw_text': Shader program: 'draw_text':
Get shader desc: draw_text_shader_desc(sg.query_backend()) Get shader desc: draw_text_shader_desc(sg.query_backend())
Vertex shader: draw_text_vs Vertex Shader: draw_text_vs
Fragment Shader: draw_text_fs
Attributes: Attributes:
ATTR_draw_text_vs_v_position => 0 ATTR_draw_text_v_position => 0
ATTR_draw_text_vs_v_texture => 1 ATTR_draw_text_v_texture => 1
Fragment shader: draw_text_fs Bindings:
Uniform block 'draw_text_fs_params': Uniform block 'draw_text_fs_params':
Odin struct: Draw_Text_Fs_Params Odin struct: Draw_Text_Fs_Params
Bind slot: SLOT_draw_text_fs_params => 0 Bind slot: UB_draw_text_fs_params => 0
Image 'draw_text_src_texture': Image 'draw_text_src_texture':
Image type: ._2D Image type: ._2D
Sample type: .FLOAT Sample type: .FLOAT
Multisampled: false Multisampled: false
Bind slot: SLOT_draw_text_src_texture => 0 Bind slot: IMG_draw_text_src_texture => 0
Sampler 'draw_text_src_sampler': Sampler 'draw_text_src_sampler':
Type: .FILTERING Type: .FILTERING
Bind slot: SLOT_draw_text_src_sampler => 0 Bind slot: SMP_draw_text_src_sampler => 0
Image Sampler Pair 'draw_text_src_texture_draw_text_src_sampler':
Image: draw_text_src_texture
Sampler: draw_text_src_sampler
*/ */
ATTR_draw_text_vs_v_position :: 0 ATTR_draw_text_v_position :: 0
ATTR_draw_text_vs_v_texture :: 1 ATTR_draw_text_v_texture :: 1
SLOT_draw_text_fs_params :: 0 UB_draw_text_fs_params :: 0
SLOT_draw_text_src_texture :: 0 IMG_draw_text_src_texture :: 0
SLOT_draw_text_src_sampler :: 0 SMP_draw_text_src_sampler :: 0
Draw_Text_Fs_Params :: struct #align(16) { Draw_Text_Fs_Params :: struct #align(16) {
using _: struct #packed { using _: struct #packed {
down_sample: i32, down_sample: i32,
@@ -58,7 +56,7 @@ Draw_Text_Fs_Params :: struct #align(16) {
} }
*/ */
@(private) @(private="file")
draw_text_vs_source_glsl410 := [255]u8 { draw_text_vs_source_glsl410 := [255]u8 {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61, 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
@@ -104,7 +102,7 @@ draw_text_vs_source_glsl410 := [255]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_fs_source_glsl410 := [882]u8 { draw_text_fs_source_glsl410 := [882]u8 {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x73,0x74, 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x73,0x74,
0x72,0x75,0x63,0x74,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,0x74,0x5f,0x66, 0x72,0x75,0x63,0x74,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,0x74,0x5f,0x66,
@@ -177,7 +175,7 @@ draw_text_fs_source_glsl410 := [882]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_vs_source_glsl300es := [237]u8 { draw_text_vs_source_glsl300es := [237]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,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61, 0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,
@@ -224,7 +222,7 @@ draw_text_vs_source_glsl300es := [237]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_fs_source_glsl300es := [940]u8 { draw_text_fs_source_glsl300es := [940]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,
0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
@@ -321,7 +319,7 @@ draw_text_fs_source_glsl300es := [940]u8 {
return stage_output; return stage_output;
} }
*/ */
@(private) @(private="file")
draw_text_vs_source_hlsl4 := [724]u8 { draw_text_vs_source_hlsl4 := [724]u8 {
0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c, 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,
0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69, 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,
@@ -412,7 +410,7 @@ draw_text_vs_source_hlsl4 := [724]u8 {
return stage_output; return stage_output;
} }
*/ */
@(private) @(private="file")
draw_text_fs_source_hlsl4 := [1257]u8 { draw_text_fs_source_hlsl4 := [1257]u8 {
0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78, 0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,
0x74,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3a,0x20,0x72,0x65, 0x74,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3a,0x20,0x72,0x65,
@@ -521,7 +519,7 @@ draw_text_fs_source_hlsl4 := [1257]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_vs_source_metal_macos := [495]u8 { draw_text_vs_source_metal_macos := [495]u8 {
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
@@ -590,7 +588,7 @@ draw_text_vs_source_metal_macos := [495]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_fs_source_metal_macos := [1141]u8 { draw_text_fs_source_metal_macos := [1141]u8 {
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
@@ -702,7 +700,7 @@ draw_text_fs_source_metal_macos := [1141]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_vs_source_wgsl := [756]u8 { draw_text_vs_source_wgsl := [756]u8 {
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
@@ -763,13 +761,13 @@ draw_text_vs_source_wgsl := [756]u8 {
colour : vec4f, colour : vec4f,
} }
@group(1) @binding(48) var draw_text_src_texture : texture_2d<f32>; @group(1) @binding(64) var draw_text_src_texture : texture_2d<f32>;
@group(1) @binding(64) var draw_text_src_sampler : sampler; @group(1) @binding(80) var draw_text_src_sampler : sampler;
var<private> uv : vec2f; var<private> uv : vec2f;
@group(0) @binding(4) var<uniform> x_31 : draw_text_fs_params; @group(0) @binding(8) var<uniform> x_31 : draw_text_fs_params;
var<private> frag_color : vec4f; var<private> frag_color : vec4f;
@@ -811,7 +809,7 @@ draw_text_vs_source_wgsl := [756]u8 {
} }
*/ */
@(private) @(private="file")
draw_text_fs_source_wgsl := [1772]u8 { draw_text_fs_source_wgsl := [1772]u8 {
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
@@ -823,17 +821,17 @@ draw_text_fs_source_wgsl := [1772]u8 {
0x2f,0x2a,0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x31,0x36,0x29,0x20,0x2a, 0x2f,0x2a,0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x31,0x36,0x29,0x20,0x2a,
0x2f,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x3a,0x20,0x76,0x65,0x63, 0x2f,0x0a,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x75,0x72,0x20,0x3a,0x20,0x76,0x65,0x63,
0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29, 0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29,
0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x34,0x38,0x29,0x20,0x76,0x61, 0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x36,0x34,0x29,0x20,0x76,0x61,
0x72,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,0x74,0x5f,0x73,0x72,0x63,0x5f, 0x72,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,0x74,0x5f,0x73,0x72,0x63,0x5f,
0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,0x75,0x72, 0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,
0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f, 0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,
0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x36, 0x75,0x70,0x28,0x31,0x29,0x20,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x38,
0x34,0x29,0x20,0x76,0x61,0x72,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,0x74, 0x30,0x29,0x20,0x76,0x61,0x72,0x20,0x64,0x72,0x61,0x77,0x5f,0x74,0x65,0x78,0x74,
0x5f,0x73,0x72,0x63,0x5f,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x3a,0x20,0x73, 0x5f,0x73,0x72,0x63,0x5f,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x3a,0x20,0x73,
0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69, 0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66, 0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,
0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,0x20,0x40,0x62,0x69, 0x3b,0x0a,0x0a,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,0x20,0x40,0x62,0x69,
0x6e,0x64,0x69,0x6e,0x67,0x28,0x34,0x29,0x20,0x76,0x61,0x72,0x3c,0x75,0x6e,0x69, 0x6e,0x64,0x69,0x6e,0x67,0x28,0x38,0x29,0x20,0x76,0x61,0x72,0x3c,0x75,0x6e,0x69,
0x66,0x6f,0x72,0x6d,0x3e,0x20,0x78,0x5f,0x33,0x31,0x20,0x3a,0x20,0x64,0x72,0x61, 0x66,0x6f,0x72,0x6d,0x3e,0x20,0x78,0x5f,0x33,0x31,0x20,0x3a,0x20,0x64,0x72,0x61,
0x77,0x5f,0x74,0x65,0x78,0x74,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, 0x77,0x5f,0x74,0x65,0x78,0x74,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,
0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20, 0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,
@@ -930,109 +928,123 @@ draw_text_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
desc.label = "draw_text_shader" desc.label = "draw_text_shader"
#partial switch backend { #partial switch backend {
case .GLCORE: case .GLCORE:
desc.attrs[0].name = "v_position" desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_glsl410
desc.attrs[1].name = "v_texture" desc.vertex_func.entry = "main"
desc.vs.source = transmute(cstring)&draw_text_vs_source_glsl410 desc.fragment_func.source = transmute(cstring)&draw_text_fs_source_glsl410
desc.vs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.source = transmute(cstring)&draw_text_fs_source_glsl410 desc.attrs[0].glsl_name = "v_position"
desc.fs.entry = "main" desc.attrs[1].glsl_name = "v_texture"
desc.fs.uniform_blocks[0].size = 32 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.uniform_blocks[0].uniforms[0].name = "_31.down_sample" desc.uniform_blocks[0].size = 32
desc.fs.uniform_blocks[0].uniforms[0].type = .INT desc.uniform_blocks[0].glsl_uniforms[0].type = .INT
desc.fs.uniform_blocks[0].uniforms[0].array_count = 0 desc.uniform_blocks[0].glsl_uniforms[0].array_count = 0
desc.fs.uniform_blocks[0].uniforms[1].name = "_31.colour" desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "_31.down_sample"
desc.fs.uniform_blocks[0].uniforms[1].type = .FLOAT4 desc.uniform_blocks[0].glsl_uniforms[1].type = .FLOAT4
desc.fs.uniform_blocks[0].uniforms[1].array_count = 0 desc.uniform_blocks[0].glsl_uniforms[1].array_count = 0
desc.fs.images[0].used = true desc.uniform_blocks[0].glsl_uniforms[1].glsl_name = "_31.colour"
desc.fs.images[0].multisampled = false desc.images[0].stage = .FRAGMENT
desc.fs.images[0].image_type = ._2D desc.images[0].multisampled = false
desc.fs.images[0].sample_type = .FLOAT desc.images[0].image_type = ._2D
desc.fs.samplers[0].used = true desc.images[0].sample_type = .FLOAT
desc.fs.samplers[0].sampler_type = .FILTERING desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].used = true desc.samplers[0].sampler_type = .FILTERING
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.image_sampler_pairs[0].image_slot = 0
desc.fs.image_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler" desc.image_sampler_pairs[0].sampler_slot = 0
desc.image_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler"
case .GLES3: case .GLES3:
desc.attrs[0].name = "v_position" desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_glsl300es
desc.attrs[1].name = "v_texture" desc.vertex_func.entry = "main"
desc.vs.source = transmute(cstring)&draw_text_vs_source_glsl300es desc.fragment_func.source = transmute(cstring)&draw_text_fs_source_glsl300es
desc.vs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.source = transmute(cstring)&draw_text_fs_source_glsl300es desc.attrs[0].glsl_name = "v_position"
desc.fs.entry = "main" desc.attrs[1].glsl_name = "v_texture"
desc.fs.uniform_blocks[0].size = 32 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.uniform_blocks[0].uniforms[0].name = "_31.down_sample" desc.uniform_blocks[0].size = 32
desc.fs.uniform_blocks[0].uniforms[0].type = .INT desc.uniform_blocks[0].glsl_uniforms[0].type = .INT
desc.fs.uniform_blocks[0].uniforms[0].array_count = 0 desc.uniform_blocks[0].glsl_uniforms[0].array_count = 0
desc.fs.uniform_blocks[0].uniforms[1].name = "_31.colour" desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "_31.down_sample"
desc.fs.uniform_blocks[0].uniforms[1].type = .FLOAT4 desc.uniform_blocks[0].glsl_uniforms[1].type = .FLOAT4
desc.fs.uniform_blocks[0].uniforms[1].array_count = 0 desc.uniform_blocks[0].glsl_uniforms[1].array_count = 0
desc.fs.images[0].used = true desc.uniform_blocks[0].glsl_uniforms[1].glsl_name = "_31.colour"
desc.fs.images[0].multisampled = false desc.images[0].stage = .FRAGMENT
desc.fs.images[0].image_type = ._2D desc.images[0].multisampled = false
desc.fs.images[0].sample_type = .FLOAT desc.images[0].image_type = ._2D
desc.fs.samplers[0].used = true desc.images[0].sample_type = .FLOAT
desc.fs.samplers[0].sampler_type = .FILTERING desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].used = true desc.samplers[0].sampler_type = .FILTERING
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.image_sampler_pairs[0].image_slot = 0
desc.fs.image_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler" desc.image_sampler_pairs[0].sampler_slot = 0
desc.image_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler"
case .D3D11: case .D3D11:
desc.attrs[0].sem_name = "TEXCOORD" desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_hlsl4
desc.attrs[0].sem_index = 0 desc.vertex_func.d3d11_target = "vs_4_0"
desc.attrs[1].sem_name = "TEXCOORD" desc.vertex_func.entry = "main"
desc.attrs[1].sem_index = 1 desc.fragment_func.source = transmute(cstring)&draw_text_fs_source_hlsl4
desc.vs.source = transmute(cstring)&draw_text_vs_source_hlsl4 desc.fragment_func.d3d11_target = "ps_4_0"
desc.vs.d3d11_target = "vs_4_0" desc.fragment_func.entry = "main"
desc.vs.entry = "main" desc.attrs[0].hlsl_sem_name = "TEXCOORD"
desc.fs.source = transmute(cstring)&draw_text_fs_source_hlsl4 desc.attrs[0].hlsl_sem_index = 0
desc.fs.d3d11_target = "ps_4_0" desc.attrs[1].hlsl_sem_name = "TEXCOORD"
desc.fs.entry = "main" desc.attrs[1].hlsl_sem_index = 1
desc.fs.uniform_blocks[0].size = 32 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.images[0].used = true desc.uniform_blocks[0].size = 32
desc.fs.images[0].multisampled = false desc.uniform_blocks[0].hlsl_register_b_n = 0
desc.fs.images[0].image_type = ._2D desc.images[0].stage = .FRAGMENT
desc.fs.images[0].sample_type = .FLOAT desc.images[0].multisampled = false
desc.fs.samplers[0].used = true desc.images[0].image_type = ._2D
desc.fs.samplers[0].sampler_type = .FILTERING desc.images[0].sample_type = .FLOAT
desc.fs.image_sampler_pairs[0].used = true desc.images[0].hlsl_register_t_n = 0
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.samplers[0].sampler_type = .FILTERING
desc.samplers[0].hlsl_register_s_n = 0
desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.image_sampler_pairs[0].image_slot = 0
desc.image_sampler_pairs[0].sampler_slot = 0
case .METAL_MACOS: case .METAL_MACOS:
desc.vs.source = transmute(cstring)&draw_text_vs_source_metal_macos desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_metal_macos
desc.vs.entry = "main0" desc.vertex_func.entry = "main0"
desc.fs.source = transmute(cstring)&draw_text_fs_source_metal_macos desc.fragment_func.source = transmute(cstring)&draw_text_fs_source_metal_macos
desc.fs.entry = "main0" desc.fragment_func.entry = "main0"
desc.fs.uniform_blocks[0].size = 32 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.images[0].used = true desc.uniform_blocks[0].size = 32
desc.fs.images[0].multisampled = false desc.uniform_blocks[0].msl_buffer_n = 0
desc.fs.images[0].image_type = ._2D desc.images[0].stage = .FRAGMENT
desc.fs.images[0].sample_type = .FLOAT desc.images[0].multisampled = false
desc.fs.samplers[0].used = true desc.images[0].image_type = ._2D
desc.fs.samplers[0].sampler_type = .FILTERING desc.images[0].sample_type = .FLOAT
desc.fs.image_sampler_pairs[0].used = true desc.images[0].msl_texture_n = 0
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.samplers[0].sampler_type = .FILTERING
desc.samplers[0].msl_sampler_n = 0
desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.image_sampler_pairs[0].image_slot = 0
desc.image_sampler_pairs[0].sampler_slot = 0
case .WGPU: case .WGPU:
desc.vs.source = transmute(cstring)&draw_text_vs_source_wgsl desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_wgsl
desc.vs.entry = "main" desc.vertex_func.entry = "main"
desc.fs.source = transmute(cstring)&draw_text_fs_source_wgsl desc.fragment_func.source = transmute(cstring)&draw_text_fs_source_wgsl
desc.fs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.uniform_blocks[0].size = 32 desc.uniform_blocks[0].stage = .FRAGMENT
desc.fs.uniform_blocks[0].layout = .STD140 desc.uniform_blocks[0].layout = .STD140
desc.fs.images[0].used = true desc.uniform_blocks[0].size = 32
desc.fs.images[0].multisampled = false desc.uniform_blocks[0].wgsl_group0_binding_n = 8
desc.fs.images[0].image_type = ._2D desc.images[0].stage = .FRAGMENT
desc.fs.images[0].sample_type = .FLOAT desc.images[0].multisampled = false
desc.fs.samplers[0].used = true desc.images[0].image_type = ._2D
desc.fs.samplers[0].sampler_type = .FILTERING desc.images[0].sample_type = .FLOAT
desc.fs.image_sampler_pairs[0].used = true desc.images[0].wgsl_group1_binding_n = 64
desc.fs.image_sampler_pairs[0].image_slot = 0 desc.samplers[0].stage = .FRAGMENT
desc.fs.image_sampler_pairs[0].sampler_slot = 0 desc.samplers[0].sampler_type = .FILTERING
desc.samplers[0].wgsl_group1_binding_n = 80
desc.image_sampler_pairs[0].stage = .FRAGMENT
desc.image_sampler_pairs[0].image_slot = 0
desc.image_sampler_pairs[0].sampler_slot = 0
} }
return desc return desc
} }

View File

@@ -23,10 +23,10 @@ void main()
in vec2 uv; in vec2 uv;
out vec4 frag_color; out vec4 frag_color;
uniform texture2D draw_text_src_texture; layout(binding = 0) uniform texture2D draw_text_src_texture;
uniform sampler draw_text_src_sampler; layout(binding = 0) uniform sampler draw_text_src_sampler;
uniform draw_text_fs_params { layout(binding = 0) uniform draw_text_fs_params {
int down_sample; int down_sample;
vec4 colour; vec4 colour;
}; };

View File

@@ -12,14 +12,15 @@ import sg "thirdparty:sokol/gfx"
========= =========
Shader program: 'render_glyph': Shader program: 'render_glyph':
Get shader desc: render_glyph_shader_desc(sg.query_backend()) Get shader desc: render_glyph_shader_desc(sg.query_backend())
Vertex shader: render_glyph_vs Vertex Shader: render_glyph_vs
Fragment Shader: render_glyph_fs
Attributes: Attributes:
ATTR_render_glyph_vs_v_position => 0 ATTR_render_glyph_v_position => 0
ATTR_render_glyph_vs_v_texture => 1 ATTR_render_glyph_v_texture => 1
Fragment shader: render_glyph_fs Bindings:
*/ */
ATTR_render_glyph_vs_v_position :: 0 ATTR_render_glyph_v_position :: 0
ATTR_render_glyph_vs_v_texture :: 1 ATTR_render_glyph_v_texture :: 1
/* /*
#version 410 #version 410
@@ -34,7 +35,7 @@ ATTR_render_glyph_vs_v_texture :: 1
} }
*/ */
@(private) @(private="file")
render_glyph_vs_source_glsl410 := [235]u8 { render_glyph_vs_source_glsl410 := [235]u8 {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61, 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
@@ -64,7 +65,7 @@ render_glyph_vs_source_glsl410 := [235]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_fs_source_glsl410 := [136]u8 { render_glyph_fs_source_glsl410 := [136]u8 {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61, 0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20, 0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
@@ -90,7 +91,7 @@ render_glyph_fs_source_glsl410 := [136]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_vs_source_glsl300es := [217]u8 { render_glyph_vs_source_glsl300es := [217]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,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61, 0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,0x6c,0x61,
@@ -121,7 +122,7 @@ render_glyph_vs_source_glsl300es := [217]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_fs_source_glsl300es := [176]u8 { render_glyph_fs_source_glsl300es := [176]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,
0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d, 0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
@@ -171,7 +172,7 @@ render_glyph_fs_source_glsl300es := [176]u8 {
return stage_output; return stage_output;
} }
*/ */
@(private) @(private="file")
render_glyph_vs_source_hlsl4 := [705]u8 { render_glyph_vs_source_hlsl4 := [705]u8 {
0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c, 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,
0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69, 0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,
@@ -247,7 +248,7 @@ render_glyph_vs_source_hlsl4 := [705]u8 {
return stage_output; return stage_output;
} }
*/ */
@(private) @(private="file")
render_glyph_fs_source_hlsl4 := [427]u8 { render_glyph_fs_source_hlsl4 := [427]u8 {
0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72, 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,
0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63, 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,
@@ -304,7 +305,7 @@ render_glyph_fs_source_hlsl4 := [427]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_vs_source_metal_macos := [473]u8 { render_glyph_vs_source_metal_macos := [473]u8 {
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
@@ -356,7 +357,7 @@ render_glyph_vs_source_metal_macos := [473]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_fs_source_metal_macos := [238]u8 { render_glyph_fs_source_metal_macos := [238]u8 {
0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f, 0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65, 0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
@@ -410,7 +411,7 @@ render_glyph_fs_source_metal_macos := [238]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_vs_source_wgsl := [698]u8 { render_glyph_vs_source_wgsl := [698]u8 {
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
@@ -482,7 +483,7 @@ render_glyph_vs_source_wgsl := [698]u8 {
} }
*/ */
@(private) @(private="file")
render_glyph_fs_source_wgsl := [361]u8 { render_glyph_fs_source_wgsl := [361]u8 {
0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20, 0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f, 0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
@@ -513,40 +514,40 @@ render_glyph_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
desc.label = "render_glyph_shader" desc.label = "render_glyph_shader"
#partial switch backend { #partial switch backend {
case .GLCORE: case .GLCORE:
desc.attrs[0].name = "v_position" desc.vertex_func.source = transmute(cstring)&render_glyph_vs_source_glsl410
desc.attrs[1].name = "v_texture" desc.vertex_func.entry = "main"
desc.vs.source = transmute(cstring)&render_glyph_vs_source_glsl410 desc.fragment_func.source = transmute(cstring)&render_glyph_fs_source_glsl410
desc.vs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.source = transmute(cstring)&render_glyph_fs_source_glsl410 desc.attrs[0].glsl_name = "v_position"
desc.fs.entry = "main" desc.attrs[1].glsl_name = "v_texture"
case .GLES3: case .GLES3:
desc.attrs[0].name = "v_position" desc.vertex_func.source = transmute(cstring)&render_glyph_vs_source_glsl300es
desc.attrs[1].name = "v_texture" desc.vertex_func.entry = "main"
desc.vs.source = transmute(cstring)&render_glyph_vs_source_glsl300es desc.fragment_func.source = transmute(cstring)&render_glyph_fs_source_glsl300es
desc.vs.entry = "main" desc.fragment_func.entry = "main"
desc.fs.source = transmute(cstring)&render_glyph_fs_source_glsl300es desc.attrs[0].glsl_name = "v_position"
desc.fs.entry = "main" desc.attrs[1].glsl_name = "v_texture"
case .D3D11: case .D3D11:
desc.attrs[0].sem_name = "TEXCOORD" desc.vertex_func.source = transmute(cstring)&render_glyph_vs_source_hlsl4
desc.attrs[0].sem_index = 0 desc.vertex_func.d3d11_target = "vs_4_0"
desc.attrs[1].sem_name = "TEXCOORD" desc.vertex_func.entry = "main"
desc.attrs[1].sem_index = 1 desc.fragment_func.source = transmute(cstring)&render_glyph_fs_source_hlsl4
desc.vs.source = transmute(cstring)&render_glyph_vs_source_hlsl4 desc.fragment_func.d3d11_target = "ps_4_0"
desc.vs.d3d11_target = "vs_4_0" desc.fragment_func.entry = "main"
desc.vs.entry = "main" desc.attrs[0].hlsl_sem_name = "TEXCOORD"
desc.fs.source = transmute(cstring)&render_glyph_fs_source_hlsl4 desc.attrs[0].hlsl_sem_index = 0
desc.fs.d3d11_target = "ps_4_0" desc.attrs[1].hlsl_sem_name = "TEXCOORD"
desc.fs.entry = "main" desc.attrs[1].hlsl_sem_index = 1
case .METAL_MACOS: case .METAL_MACOS:
desc.vs.source = transmute(cstring)&render_glyph_vs_source_metal_macos desc.vertex_func.source = transmute(cstring)&render_glyph_vs_source_metal_macos
desc.vs.entry = "main0" desc.vertex_func.entry = "main0"
desc.fs.source = transmute(cstring)&render_glyph_fs_source_metal_macos desc.fragment_func.source = transmute(cstring)&render_glyph_fs_source_metal_macos
desc.fs.entry = "main0" desc.fragment_func.entry = "main0"
case .WGPU: case .WGPU:
desc.vs.source = transmute(cstring)&render_glyph_vs_source_wgsl desc.vertex_func.source = transmute(cstring)&render_glyph_vs_source_wgsl
desc.vs.entry = "main" desc.vertex_func.entry = "main"
desc.fs.source = transmute(cstring)&render_glyph_fs_source_wgsl desc.fragment_func.source = transmute(cstring)&render_glyph_fs_source_wgsl
desc.fs.entry = "main" desc.fragment_func.entry = "main"
} }
return desc return desc
} }

View File

@@ -217,7 +217,7 @@ draw_text_zoomed_norm :: proc(content : string, id : Font_ID, size : f32, pos :
ve.draw_text(&demo_ctx.ve_ctx, ve_id, content, pos, text_scale) ve.draw_text(&demo_ctx.ve_ctx, ve_id, content, pos, text_scale)
} }
sokol_app_alloc :: proc "c" ( size : u64, user_data : rawptr ) -> rawptr { sokol_app_alloc :: proc "c" ( size : uint, user_data : rawptr ) -> rawptr {
context = runtime.default_context() context = runtime.default_context()
block, error := mem.alloc( int(size), allocator = context.allocator ) block, error := mem.alloc( int(size), allocator = context.allocator )
assert(error == .None, "sokol_app allocation failed") assert(error == .None, "sokol_app allocation failed")
@@ -229,7 +229,7 @@ sokol_app_free :: proc "c" ( data : rawptr, user_data : rawptr ) {
free(data, allocator = context.allocator) free(data, allocator = context.allocator)
} }
sokol_gfx_alloc :: proc "c" ( size : u64, user_data : rawptr ) -> rawptr { sokol_gfx_alloc :: proc "c" ( size : uint, user_data : rawptr ) -> rawptr {
context = runtime.default_context() context = runtime.default_context()
block, error := mem.alloc( int(size), allocator = context.allocator ) block, error := mem.alloc( int(size), allocator = context.allocator )
assert(error == .None, "sokol_gfx allocation failed") assert(error == .None, "sokol_gfx allocation failed")