mirror of
				https://github.com/Ed94/VEFontCache-Odin.git
				synced 2025-11-03 15:26:16 -08:00 
			
		
		
		
	update sokol (views update for gfx was breaking change)
This commit is contained in:
		@@ -13,14 +13,20 @@ Context :: struct {
 | 
			
		||||
	screen_shader : gfx.Shader,
 | 
			
		||||
 | 
			
		||||
	// ve.glyph_buffer.(width, height), R8
 | 
			
		||||
	glyph_rt_color   : gfx.Image,
 | 
			
		||||
	glyph_rt_depth   : gfx.Image,
 | 
			
		||||
	glyph_rt_sampler : gfx.Sampler,
 | 
			
		||||
	glyph_rt_color        : gfx.Image,
 | 
			
		||||
	glyph_rt_depth        : gfx.Image,
 | 
			
		||||
	glyph_rt_view_color   : gfx.View,
 | 
			
		||||
	glyph_rt_view_depth   : gfx.View,
 | 
			
		||||
	glyph_rt_view_texture : gfx.View,
 | 
			
		||||
	glyph_rt_sampler      : gfx.Sampler,
 | 
			
		||||
 | 
			
		||||
	// ve.atlas.(width, height), R8
 | 
			
		||||
	atlas_rt_color   : gfx.Image,
 | 
			
		||||
	atlas_rt_depth   : gfx.Image,
 | 
			
		||||
	atlas_rt_sampler : gfx.Sampler,
 | 
			
		||||
	atlas_rt_color        : gfx.Image,
 | 
			
		||||
	atlas_rt_depth        : gfx.Image,
 | 
			
		||||
	atlas_rt_view_color   : gfx.View,
 | 
			
		||||
	atlas_rt_view_depth   : gfx.View,
 | 
			
		||||
	atlas_rt_view_texture : gfx.View,
 | 
			
		||||
	atlas_rt_sampler      : gfx.Sampler,
 | 
			
		||||
 | 
			
		||||
	glyph_pipeline  : gfx.Pipeline,
 | 
			
		||||
	atlas_pipeline  : gfx.Pipeline,
 | 
			
		||||
@@ -33,7 +39,6 @@ Context :: struct {
 | 
			
		||||
 | 
			
		||||
setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index_cap : u64 )
 | 
			
		||||
{
 | 
			
		||||
	Attachment_Desc            :: gfx.Attachment_Desc
 | 
			
		||||
	Blend_Factor               :: gfx.Blend_Factor
 | 
			
		||||
	Blend_Op                   :: gfx.Blend_Op
 | 
			
		||||
	Blend_State                :: gfx.Blend_State
 | 
			
		||||
@@ -43,18 +48,21 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
	Color_Target_State         :: gfx.Color_Target_State
 | 
			
		||||
	Filter                     :: gfx.Filter
 | 
			
		||||
	Image_Desc                 :: gfx.Image_Desc
 | 
			
		||||
	Image_View_Desc            :: gfx.Image_View_Desc
 | 
			
		||||
	Image_Usage                :: gfx.Image_Usage
 | 
			
		||||
	Pass_Action                :: gfx.Pass_Action
 | 
			
		||||
	Range                      :: gfx.Range
 | 
			
		||||
	Resource_State             :: gfx.Resource_State
 | 
			
		||||
	Sampler_Description        :: gfx.Sampler_Desc
 | 
			
		||||
	Wrap                       :: gfx.Wrap
 | 
			
		||||
	Texture_View_Desc          :: gfx.Texture_View_Desc
 | 
			
		||||
	Vertex_Attribute_State     :: gfx.Vertex_Attr_State
 | 
			
		||||
	Vertex_Buffer_Layout_State :: gfx.Vertex_Buffer_Layout_State
 | 
			
		||||
	Vertex_Index_Type          :: gfx.Index_Type
 | 
			
		||||
	Vertex_Format              :: gfx.Vertex_Format
 | 
			
		||||
	Vertex_Layout_State        :: gfx.Vertex_Layout_State
 | 
			
		||||
	Vertex_Step                :: gfx.Vertex_Step
 | 
			
		||||
	View_Desc                  :: gfx.View_Desc
 | 
			
		||||
 | 
			
		||||
	backend := gfx.query_backend()
 | 
			
		||||
	app_env := glue.environment()
 | 
			
		||||
@@ -134,7 +142,7 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
	{
 | 
			
		||||
		ctx.glyph_rt_color = gfx.make_image( Image_Desc {
 | 
			
		||||
			type          = ._2D,
 | 
			
		||||
			usage         = Image_Usage { render_attachment = true, immutable = true },
 | 
			
		||||
			usage         = Image_Usage { color_attachment = true, immutable = true },
 | 
			
		||||
			width         = i32(ve_ctx.glyph_buffer.size.x),
 | 
			
		||||
			height        = i32(ve_ctx.glyph_buffer.size.y),
 | 
			
		||||
			num_slices    = 1,
 | 
			
		||||
@@ -146,7 +154,7 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
 | 
			
		||||
		ctx.glyph_rt_depth = gfx.make_image( Image_Desc {
 | 
			
		||||
			type          = ._2D,
 | 
			
		||||
			usage         = Image_Usage { render_attachment = true, immutable = true },
 | 
			
		||||
			usage         = Image_Usage { depth_stencil_attachment = true, immutable = true },
 | 
			
		||||
			width         = i32(ve_ctx.glyph_buffer.size.x),
 | 
			
		||||
			height        = i32(ve_ctx.glyph_buffer.size.y),
 | 
			
		||||
			num_slices    = 1,
 | 
			
		||||
@@ -169,19 +177,27 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_sampler_state( ctx.glyph_rt_sampler) < Resource_State.FAILED, "Failed to make atlas_rt_sampler" )
 | 
			
		||||
 | 
			
		||||
		color_attach := Attachment_Desc {
 | 
			
		||||
		color_attach := Image_View_Desc {
 | 
			
		||||
			image = ctx.glyph_rt_color,
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		glyph_attachments := gfx.make_attachments({
 | 
			
		||||
			colors = {
 | 
			
		||||
				0 = color_attach,
 | 
			
		||||
			},
 | 
			
		||||
			depth_stencil = {
 | 
			
		||||
				image = ctx.glyph_rt_depth,
 | 
			
		||||
			},
 | 
			
		||||
		depth_attach := Image_View_Desc {
 | 
			
		||||
			image = ctx.glyph_rt_depth,
 | 
			
		||||
		}
 | 
			
		||||
		texture_attach := Texture_View_Desc {
 | 
			
		||||
			image = ctx.glyph_rt_color,
 | 
			
		||||
		}
 | 
			
		||||
		ctx.glyph_rt_view_color = gfx.make_view({
 | 
			
		||||
			color_attachment = color_attach,
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_attachments_state(glyph_attachments) < Resource_State.FAILED, "Failed to make glyph_attachments" )
 | 
			
		||||
		assert( gfx.query_view_state(ctx.glyph_rt_view_color) < Resource_State.FAILED, "Failed to make glyph_rt_view_color" )
 | 
			
		||||
		ctx.glyph_rt_view_depth = gfx.make_view({
 | 
			
		||||
			depth_stencil_attachment = depth_attach,
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_view_state(ctx.glyph_rt_view_depth) < Resource_State.FAILED, "Failed to make glyph_rt_view_depth" )
 | 
			
		||||
		ctx.glyph_rt_view_texture = gfx.make_view({
 | 
			
		||||
			texture = texture_attach,
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_view_state(ctx.glyph_rt_view_texture) < Resource_State.FAILED, "Failed to make glyph_rt_view_texture" )
 | 
			
		||||
 | 
			
		||||
		glyph_action := Pass_Action {
 | 
			
		||||
			colors = {
 | 
			
		||||
@@ -205,8 +221,10 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
 | 
			
		||||
		ctx.glyph_pass = gfx.Pass {
 | 
			
		||||
			action      = glyph_action,
 | 
			
		||||
			attachments = glyph_attachments,
 | 
			
		||||
			// label =
 | 
			
		||||
			attachments = { 
 | 
			
		||||
				colors        = { ctx.glyph_rt_view_color, {}, {}, {} },
 | 
			
		||||
				depth_stencil = ctx.glyph_rt_view_depth,
 | 
			
		||||
			},
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -266,7 +284,7 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
	{
 | 
			
		||||
		ctx.atlas_rt_color = gfx.make_image( Image_Desc {
 | 
			
		||||
			type          = ._2D,
 | 
			
		||||
			usage         = { render_attachment = true, immutable = true },
 | 
			
		||||
			usage         = { color_attachment = true, immutable = true },
 | 
			
		||||
			width         = i32(ve_ctx.atlas.size.x),
 | 
			
		||||
			height        = i32(ve_ctx.atlas.size.y),
 | 
			
		||||
			num_slices    = 1,
 | 
			
		||||
@@ -280,7 +298,7 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
 | 
			
		||||
		ctx.atlas_rt_depth = gfx.make_image( Image_Desc {
 | 
			
		||||
			type          = ._2D,
 | 
			
		||||
			usage         = { render_attachment = true, immutable = true },
 | 
			
		||||
			usage         = { depth_stencil_attachment = true, immutable = true },
 | 
			
		||||
			width         = i32(ve_ctx.atlas.size.x),
 | 
			
		||||
			height        = i32(ve_ctx.atlas.size.y),
 | 
			
		||||
			num_slices    = 1,
 | 
			
		||||
@@ -304,19 +322,27 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_sampler_state( ctx.atlas_rt_sampler) < Resource_State.FAILED, "Failed to make atlas_rt_sampler" )
 | 
			
		||||
 | 
			
		||||
		color_attach := Attachment_Desc {
 | 
			
		||||
		color_attach := Image_View_Desc {
 | 
			
		||||
			image     = ctx.atlas_rt_color,
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		atlas_attachments := gfx.make_attachments({
 | 
			
		||||
			colors = {
 | 
			
		||||
				0 = color_attach,
 | 
			
		||||
			},
 | 
			
		||||
			depth_stencil = {
 | 
			
		||||
				image = ctx.atlas_rt_depth,
 | 
			
		||||
			},
 | 
			
		||||
		depth_attach := Image_View_Desc {
 | 
			
		||||
			image     = ctx.atlas_rt_depth,
 | 
			
		||||
		}
 | 
			
		||||
		texture_attach := Texture_View_Desc {
 | 
			
		||||
			image     = ctx.atlas_rt_color,
 | 
			
		||||
		}
 | 
			
		||||
		ctx.atlas_rt_view_color = gfx.make_view({
 | 
			
		||||
			color_attachment = color_attach,
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_attachments_state(atlas_attachments) < Resource_State.FAILED, "Failed to make atlas_attachments")
 | 
			
		||||
		assert( gfx.query_view_state(ctx.atlas_rt_view_color) < Resource_State.FAILED, "Failed to make ctx.atlas_rt_view_color")
 | 
			
		||||
		ctx.atlas_rt_view_depth = gfx.make_view({
 | 
			
		||||
			depth_stencil_attachment = depth_attach,
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_view_state(ctx.atlas_rt_view_depth) < Resource_State.FAILED, "Failed to make ctx.atlas_rt_view_depth")
 | 
			
		||||
		ctx.atlas_rt_view_texture = gfx.make_view({
 | 
			
		||||
			texture = texture_attach,
 | 
			
		||||
		})
 | 
			
		||||
		assert( gfx.query_view_state(ctx.atlas_rt_view_texture) < Resource_State.FAILED, "Failed to make atlas_rt_view_texture" )
 | 
			
		||||
 | 
			
		||||
		atlas_action := Pass_Action {
 | 
			
		||||
			colors = {
 | 
			
		||||
@@ -338,9 +364,12 @@ setup_gfx_objects :: proc( ctx : ^Context, ve_ctx : ^ve.Context, vert_cap, index
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ctx.atlas_pass = gfx.Pass {
 | 
			
		||||
			action      = atlas_action,
 | 
			
		||||
			attachments = atlas_attachments,
 | 
			
		||||
		ctx.atlas_pass = gfx.Pass { 
 | 
			
		||||
			action = atlas_action,
 | 
			
		||||
			attachments = {
 | 
			
		||||
				colors        = { ctx.atlas_rt_view_color, {}, {}, {} },
 | 
			
		||||
				depth_stencil = ctx.atlas_rt_view_depth,
 | 
			
		||||
			},
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -538,8 +567,8 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
 | 
			
		||||
					},
 | 
			
		||||
					index_buffer        = ctx.draw_list_ibuf,
 | 
			
		||||
					index_buffer_offset = 0,
 | 
			
		||||
					images              = { IMG_blit_atlas_src_texture = ctx.glyph_rt_color,   },
 | 
			
		||||
					samplers            = { SMP_blit_atlas_src_sampler = ctx.glyph_rt_sampler, },
 | 
			
		||||
					views               = { VIEW_blit_atlas_src_texture = ctx.glyph_rt_view_texture, },
 | 
			
		||||
					samplers            = { SMP_blit_atlas_src_sampler  = ctx.glyph_rt_sampler, },
 | 
			
		||||
				})
 | 
			
		||||
 | 
			
		||||
			// 3. Use the atlas (.Target) or the glyph buffer (.Target_Unchached) to then render the text.
 | 
			
		||||
@@ -559,7 +588,7 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
 | 
			
		||||
 | 
			
		||||
				gfx.apply_pipeline( ctx.screen_pipeline )
 | 
			
		||||
 | 
			
		||||
				src_rt      := ctx.atlas_rt_color
 | 
			
		||||
				src_rt      := ctx.atlas_rt_view_texture
 | 
			
		||||
				src_sampler := ctx.atlas_rt_sampler
 | 
			
		||||
 | 
			
		||||
				fs_target_uniform := Draw_Text_Fs_Params {
 | 
			
		||||
@@ -570,7 +599,7 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
 | 
			
		||||
 | 
			
		||||
				if draw_call.pass == .Target_Uncached {
 | 
			
		||||
					// fs_target_uniform.over_sample = 1.0
 | 
			
		||||
					src_rt      = ctx.glyph_rt_color
 | 
			
		||||
					src_rt      = ctx.glyph_rt_view_texture
 | 
			
		||||
					src_sampler = ctx.glyph_rt_sampler
 | 
			
		||||
				}
 | 
			
		||||
				gfx.apply_uniforms( UB_draw_text_fs_params, Range { & fs_target_uniform, size_of(Draw_Text_Fs_Params) })
 | 
			
		||||
@@ -584,8 +613,8 @@ render_text_layer :: proc( screen_extent : ve.Vec2, ve_ctx : ^ve.Context, ctx :
 | 
			
		||||
					},
 | 
			
		||||
					index_buffer        = ctx.draw_list_ibuf,
 | 
			
		||||
					index_buffer_offset = 0,
 | 
			
		||||
					images              = { IMG_draw_text_src_texture = src_rt, },
 | 
			
		||||
					samplers            = { SMP_draw_text_src_sampler = src_sampler, },
 | 
			
		||||
					views               = { VIEW_draw_text_src_texture = src_rt, },
 | 
			
		||||
					samplers            = { SMP_draw_text_src_sampler  = src_sampler, },
 | 
			
		||||
				})
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@ import sg "thirdparty:sokol/gfx"
 | 
			
		||||
        Uniform block 'blit_atlas_fs_params':
 | 
			
		||||
            Odin struct: Blit_Atlas_Fs_Params
 | 
			
		||||
            Bind slot: UB_blit_atlas_fs_params => 0
 | 
			
		||||
        Image 'blit_atlas_src_texture':
 | 
			
		||||
        Texture 'blit_atlas_src_texture':
 | 
			
		||||
            Image type: ._2D
 | 
			
		||||
            Sample type: .FLOAT
 | 
			
		||||
            Multisampled: false
 | 
			
		||||
            Bind slot: IMG_blit_atlas_src_texture => 0
 | 
			
		||||
            Bind slot: VIEW_blit_atlas_src_texture => 0
 | 
			
		||||
        Sampler 'blit_atlas_src_sampler':
 | 
			
		||||
            Type: .FILTERING
 | 
			
		||||
            Bind slot: SMP_blit_atlas_src_sampler => 0
 | 
			
		||||
@@ -33,7 +33,7 @@ import sg "thirdparty:sokol/gfx"
 | 
			
		||||
ATTR_blit_atlas_v_position :: 0
 | 
			
		||||
ATTR_blit_atlas_v_texture :: 1
 | 
			
		||||
UB_blit_atlas_fs_params :: 0
 | 
			
		||||
IMG_blit_atlas_src_texture :: 0
 | 
			
		||||
VIEW_blit_atlas_src_texture :: 0
 | 
			
		||||
SMP_blit_atlas_src_sampler :: 0
 | 
			
		||||
Blit_Atlas_Fs_Params :: struct #align(16) {
 | 
			
		||||
    using _: struct #packed {
 | 
			
		||||
@@ -1228,7 +1228,7 @@ blit_atlas_vs_source_wgsl := [626]u8 {
 | 
			
		||||
 | 
			
		||||
    @binding(64) @group(1) var blit_atlas_src_texture : texture_2d<f32>;
 | 
			
		||||
 | 
			
		||||
    @binding(80) @group(1) var blit_atlas_src_sampler : sampler;
 | 
			
		||||
    @binding(65) @group(1) var blit_atlas_src_sampler : sampler;
 | 
			
		||||
 | 
			
		||||
    var<private> uv_1 : vec2f;
 | 
			
		||||
 | 
			
		||||
@@ -1353,7 +1353,7 @@ blit_atlas_fs_source_wgsl := [3476]u8 {
 | 
			
		||||
    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,0x20,0x74,0x65,0x78,0x74,0x75,
 | 
			
		||||
    0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x62,0x69,
 | 
			
		||||
    0x6e,0x64,0x69,0x6e,0x67,0x28,0x38,0x30,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,
 | 
			
		||||
    0x6e,0x64,0x69,0x6e,0x67,0x28,0x36,0x35,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,
 | 
			
		||||
    0x28,0x31,0x29,0x20,0x76,0x61,0x72,0x20,0x62,0x6c,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,0x0a,0x76,0x61,0x72,0x3c,0x70,
 | 
			
		||||
@@ -1576,16 +1576,16 @@ blit_atlas_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[2].type = .INT
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[2].array_count = 0
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[2].glsl_name = "_20.region"
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        desc.samplers[0].sampler_type = .FILTERING
 | 
			
		||||
        desc.image_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.image_sampler_pairs[0].image_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler"
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler"
 | 
			
		||||
    case .GLES3:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_glsl300es
 | 
			
		||||
        desc.vertex_func.entry = "main"
 | 
			
		||||
@@ -1607,16 +1607,16 @@ blit_atlas_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[2].type = .INT
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[2].array_count = 0
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[2].glsl_name = "_20.region"
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        desc.samplers[0].sampler_type = .FILTERING
 | 
			
		||||
        desc.image_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.image_sampler_pairs[0].image_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler"
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].glsl_name = "blit_atlas_src_texture_blit_atlas_src_sampler"
 | 
			
		||||
    case .D3D11:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_hlsl4
 | 
			
		||||
        desc.vertex_func.d3d11_target = "vs_4_0"
 | 
			
		||||
@@ -1634,17 +1634,17 @@ blit_atlas_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].layout = .STD140
 | 
			
		||||
        desc.uniform_blocks[0].size = 16
 | 
			
		||||
        desc.uniform_blocks[0].hlsl_register_b_n = 0
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.images[0].hlsl_register_t_n = 0
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.views[0].texture.hlsl_register_t_n = 0
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        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
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
    case .METAL_MACOS:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_metal_macos
 | 
			
		||||
        desc.vertex_func.entry = "main0"
 | 
			
		||||
@@ -1656,17 +1656,17 @@ blit_atlas_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].layout = .STD140
 | 
			
		||||
        desc.uniform_blocks[0].size = 16
 | 
			
		||||
        desc.uniform_blocks[0].msl_buffer_n = 0
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.images[0].msl_texture_n = 0
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.views[0].texture.msl_texture_n = 0
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        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
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
    case .WGPU:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&blit_atlas_vs_source_wgsl
 | 
			
		||||
        desc.vertex_func.entry = "main"
 | 
			
		||||
@@ -1678,17 +1678,17 @@ blit_atlas_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].layout = .STD140
 | 
			
		||||
        desc.uniform_blocks[0].size = 16
 | 
			
		||||
        desc.uniform_blocks[0].wgsl_group0_binding_n = 8
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.images[0].wgsl_group1_binding_n = 64
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.views[0].texture.wgsl_group1_binding_n = 64
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        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
 | 
			
		||||
        desc.samplers[0].wgsl_group1_binding_n = 65
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
    }
 | 
			
		||||
    return desc
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@ import sg "thirdparty:sokol/gfx"
 | 
			
		||||
        Uniform block 'draw_text_fs_params':
 | 
			
		||||
            Odin struct: Draw_Text_Fs_Params
 | 
			
		||||
            Bind slot: UB_draw_text_fs_params => 0
 | 
			
		||||
        Image 'draw_text_src_texture':
 | 
			
		||||
        Texture 'draw_text_src_texture':
 | 
			
		||||
            Image type: ._2D
 | 
			
		||||
            Sample type: .FLOAT
 | 
			
		||||
            Multisampled: false
 | 
			
		||||
            Bind slot: IMG_draw_text_src_texture => 0
 | 
			
		||||
            Bind slot: VIEW_draw_text_src_texture => 0
 | 
			
		||||
        Sampler 'draw_text_src_sampler':
 | 
			
		||||
            Type: .FILTERING
 | 
			
		||||
            Bind slot: SMP_draw_text_src_sampler => 0
 | 
			
		||||
@@ -33,7 +33,7 @@ import sg "thirdparty:sokol/gfx"
 | 
			
		||||
ATTR_draw_text_v_position :: 0
 | 
			
		||||
ATTR_draw_text_v_texture :: 1
 | 
			
		||||
UB_draw_text_fs_params :: 0
 | 
			
		||||
IMG_draw_text_src_texture :: 0
 | 
			
		||||
VIEW_draw_text_src_texture :: 0
 | 
			
		||||
SMP_draw_text_src_sampler :: 0
 | 
			
		||||
Draw_Text_Fs_Params :: struct #align(16) {
 | 
			
		||||
    using _: struct #packed {
 | 
			
		||||
@@ -699,7 +699,7 @@ draw_text_vs_source_wgsl := [664]u8 {
 | 
			
		||||
 | 
			
		||||
    @binding(64) @group(1) var draw_text_src_texture : texture_2d<f32>;
 | 
			
		||||
 | 
			
		||||
    @binding(80) @group(1) var draw_text_src_sampler : sampler;
 | 
			
		||||
    @binding(65) @group(1) var draw_text_src_sampler : sampler;
 | 
			
		||||
 | 
			
		||||
    var<private> uv : vec2f;
 | 
			
		||||
 | 
			
		||||
@@ -768,7 +768,7 @@ draw_text_fs_source_wgsl := [1825]u8 {
 | 
			
		||||
    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,
 | 
			
		||||
    0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x62,0x69,0x6e,
 | 
			
		||||
    0x64,0x69,0x6e,0x67,0x28,0x38,0x30,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,
 | 
			
		||||
    0x64,0x69,0x6e,0x67,0x28,0x36,0x35,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,
 | 
			
		||||
    0x31,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,
 | 
			
		||||
    0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
 | 
			
		||||
@@ -886,16 +886,16 @@ draw_text_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[0].array_count = 2
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "draw_text_fs_params"
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        desc.samplers[0].sampler_type = .FILTERING
 | 
			
		||||
        desc.image_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.image_sampler_pairs[0].image_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler"
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler"
 | 
			
		||||
    case .GLES3:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_glsl300es
 | 
			
		||||
        desc.vertex_func.entry = "main"
 | 
			
		||||
@@ -911,16 +911,16 @@ draw_text_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[0].type = .FLOAT4
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[0].array_count = 2
 | 
			
		||||
        desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "draw_text_fs_params"
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        desc.samplers[0].sampler_type = .FILTERING
 | 
			
		||||
        desc.image_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.image_sampler_pairs[0].image_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.image_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler"
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].glsl_name = "draw_text_src_texture_draw_text_src_sampler"
 | 
			
		||||
    case .D3D11:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_hlsl4
 | 
			
		||||
        desc.vertex_func.d3d11_target = "vs_4_0"
 | 
			
		||||
@@ -938,17 +938,17 @@ draw_text_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].layout = .STD140
 | 
			
		||||
        desc.uniform_blocks[0].size = 32
 | 
			
		||||
        desc.uniform_blocks[0].hlsl_register_b_n = 0
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.images[0].hlsl_register_t_n = 0
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.views[0].texture.hlsl_register_t_n = 0
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        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
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
    case .METAL_MACOS:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_metal_macos
 | 
			
		||||
        desc.vertex_func.entry = "main0"
 | 
			
		||||
@@ -960,17 +960,17 @@ draw_text_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].layout = .STD140
 | 
			
		||||
        desc.uniform_blocks[0].size = 32
 | 
			
		||||
        desc.uniform_blocks[0].msl_buffer_n = 0
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.images[0].msl_texture_n = 0
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.views[0].texture.msl_texture_n = 0
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        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
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
    case .WGPU:
 | 
			
		||||
        desc.vertex_func.source = transmute(cstring)&draw_text_vs_source_wgsl
 | 
			
		||||
        desc.vertex_func.entry = "main"
 | 
			
		||||
@@ -982,17 +982,17 @@ draw_text_shader_desc :: proc (backend: sg.Backend) -> sg.Shader_Desc {
 | 
			
		||||
        desc.uniform_blocks[0].layout = .STD140
 | 
			
		||||
        desc.uniform_blocks[0].size = 32
 | 
			
		||||
        desc.uniform_blocks[0].wgsl_group0_binding_n = 8
 | 
			
		||||
        desc.images[0].stage = .FRAGMENT
 | 
			
		||||
        desc.images[0].multisampled = false
 | 
			
		||||
        desc.images[0].image_type = ._2D
 | 
			
		||||
        desc.images[0].sample_type = .FLOAT
 | 
			
		||||
        desc.images[0].wgsl_group1_binding_n = 64
 | 
			
		||||
        desc.views[0].texture.stage = .FRAGMENT
 | 
			
		||||
        desc.views[0].texture.image_type = ._2D
 | 
			
		||||
        desc.views[0].texture.sample_type = .FLOAT
 | 
			
		||||
        desc.views[0].texture.multisampled = false
 | 
			
		||||
        desc.views[0].texture.wgsl_group1_binding_n = 64
 | 
			
		||||
        desc.samplers[0].stage = .FRAGMENT
 | 
			
		||||
        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
 | 
			
		||||
        desc.samplers[0].wgsl_group1_binding_n = 65
 | 
			
		||||
        desc.texture_sampler_pairs[0].stage = .FRAGMENT
 | 
			
		||||
        desc.texture_sampler_pairs[0].view_slot = 0
 | 
			
		||||
        desc.texture_sampler_pairs[0].sampler_slot = 0
 | 
			
		||||
    }
 | 
			
		||||
    return desc
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user