This commit is contained in:
2026-01-20 12:04:30 -06:00
parent 187879a7c6
commit 313a2e7eeb
8 changed files with 79 additions and 78 deletions

View File

@@ -64,14 +64,14 @@ sdl_gpu.init = function(opts) {
_window_width = opts.width || 1280
_window_height = opts.height || 720
_window = new video.window({
_window = video.window({
title: opts.title || "Prosperon",
width: _window_width,
height: _window_height,
resizable: true
})
_gpu = new gpu_mod.gpu({debug: true, shaders_msl: true, lowpower: true})
_gpu =gpu_mod.gpu({debug: true, shaders_msl: true, lowpower: true})
_gpu.claim_window(_window)
_swapchain_format = _gpu.swapchain_format(_window)
@@ -83,14 +83,14 @@ sdl_gpu.init = function(opts) {
}
// Create samplers
_sampler_nearest = new gpu_mod.sampler(_gpu, {
_sampler_nearest =gpu_mod.sampler(_gpu, {
min_filter: "nearest",
mag_filter: "nearest",
u: "clamp_to_edge",
v: "clamp_to_edge"
})
_sampler_linear = new gpu_mod.sampler(_gpu, {
_sampler_linear =gpu_mod.sampler(_gpu, {
min_filter: "linear",
mag_filter: "linear",
u: "clamp_to_edge",
@@ -144,7 +144,7 @@ function _load_shaders() {
return false
}
_sprite_vert = new gpu_mod.shader(_gpu, {
_sprite_vert =gpu_mod.shader(_gpu, {
code: sprite_vert_code,
stage: "vertex",
format: "msl",
@@ -152,7 +152,7 @@ function _load_shaders() {
num_uniform_buffers: 1
})
_sprite_frag = new gpu_mod.shader(_gpu, {
_sprite_frag =gpu_mod.shader(_gpu, {
code: sprite_frag_code,
stage: "fragment",
format: "msl",
@@ -162,7 +162,7 @@ function _load_shaders() {
})
if (blit_vert_code && blit_frag_code) {
_blit_vert = new gpu_mod.shader(_gpu, {
_blit_vert =gpu_mod.shader(_gpu, {
code: blit_vert_code,
stage: "vertex",
format: "msl",
@@ -170,7 +170,7 @@ function _load_shaders() {
num_uniform_buffers: 0
})
_blit_frag = new gpu_mod.shader(_gpu, {
_blit_frag =gpu_mod.shader(_gpu, {
code: blit_frag_code,
stage: "fragment",
format: "msl",
@@ -181,7 +181,7 @@ function _load_shaders() {
}
if (threshold_frag_code) {
_threshold_frag = new gpu_mod.shader(_gpu, {
_threshold_frag =gpu_mod.shader(_gpu, {
code: threshold_frag_code,
stage: "fragment",
format: "msl",
@@ -192,7 +192,7 @@ function _load_shaders() {
}
if (blur_frag_code) {
_blur_frag = new gpu_mod.shader(_gpu, {
_blur_frag =gpu_mod.shader(_gpu, {
code: blur_frag_code,
stage: "fragment",
format: "msl",
@@ -203,7 +203,7 @@ function _load_shaders() {
}
if (mask_frag_code) {
_mask_frag = new gpu_mod.shader(_gpu, {
_mask_frag =gpu_mod.shader(_gpu, {
code: mask_frag_code,
stage: "fragment",
format: "msl",
@@ -214,7 +214,7 @@ function _load_shaders() {
}
if (text_sdf_frag_code) {
_text_sdf_frag = new gpu_mod.shader(_gpu, {
_text_sdf_frag =gpu_mod.shader(_gpu, {
code: text_sdf_frag_code,
stage: "fragment",
format: "msl",
@@ -226,7 +226,7 @@ function _load_shaders() {
var text_msdf_frag_code = io.slurp("shaders/msl/text_msdf.frag.msl")
if (text_msdf_frag_code) {
_text_msdf_frag = new gpu_mod.shader(_gpu, {
_text_msdf_frag =gpu_mod.shader(_gpu, {
code: text_msdf_frag_code,
stage: "fragment",
format: "msl",
@@ -238,7 +238,7 @@ function _load_shaders() {
var crt_frag_code = io.slurp("shaders/msl/crt.frag.msl")
if (crt_frag_code) {
_crt_frag = new gpu_mod.shader(_gpu, {
_crt_frag =gpu_mod.shader(_gpu, {
code: crt_frag_code,
stage: "fragment",
format: "msl",
@@ -250,7 +250,7 @@ function _load_shaders() {
var accumulator_frag_code = io.slurp("shaders/msl/accumulator.frag.msl")
if (accumulator_frag_code) {
_accumulator_frag = new gpu_mod.shader(_gpu, {
_accumulator_frag =gpu_mod.shader(_gpu, {
code: accumulator_frag_code,
stage: "fragment",
format: "msl",
@@ -262,7 +262,7 @@ function _load_shaders() {
var shape2d_frag_code = io.slurp("shaders/msl/shape2d.frag.msl")
if (shape2d_frag_code) {
_shape2d_frag = new gpu_mod.shader(_gpu, {
_shape2d_frag =gpu_mod.shader(_gpu, {
code: shape2d_frag_code,
stage: "fragment",
format: "msl",
@@ -281,7 +281,7 @@ function _load_shaders() {
function _create_pipelines() {
// Sprite pipeline (alpha blend)
_pipelines.sprite_alpha = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.sprite_alpha =gpu_mod.graphics_pipeline(_gpu, {
vertex: _sprite_vert,
fragment: _sprite_frag,
primitive: "triangle",
@@ -315,7 +315,7 @@ function _create_pipelines() {
})
// Sprite pipeline (additive blend for bloom)
_pipelines.sprite_add = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.sprite_add =gpu_mod.graphics_pipeline(_gpu, {
vertex: _sprite_vert,
fragment: _sprite_frag,
primitive: "triangle",
@@ -350,7 +350,7 @@ function _create_pipelines() {
// Blit pipeline (for fullscreen passes)
if (_blit_vert && _blit_frag) {
_pipelines.blit = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.blit =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _blit_frag,
primitive: "triangle",
@@ -385,7 +385,7 @@ function _create_pipelines() {
// Threshold pipeline (for bloom extraction)
if (_blit_vert && _threshold_frag) {
_pipelines.threshold = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.threshold =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _threshold_frag,
primitive: "triangle",
@@ -409,7 +409,7 @@ function _create_pipelines() {
// Blur pipeline
if (_blit_vert && _blur_frag) {
_pipelines.blur = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.blur =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _blur_frag,
primitive: "triangle",
@@ -433,7 +433,7 @@ function _create_pipelines() {
// Mask pipeline
if (_blit_vert && _mask_frag) {
_pipelines.mask = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.mask =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _mask_frag,
primitive: "triangle",
@@ -468,7 +468,7 @@ function _create_pipelines() {
// CRT pipeline
if (_blit_vert && _crt_frag) {
_pipelines.crt = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.crt =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _crt_frag,
primitive: "triangle",
@@ -492,7 +492,7 @@ function _create_pipelines() {
// Blit additive pipeline (for bloom compositing)
if (_blit_vert && _blit_frag) {
_pipelines.blit_add = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.blit_add =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _blit_frag,
primitive: "triangle",
@@ -527,7 +527,7 @@ function _create_pipelines() {
// SDF text pipeline
if (_sprite_vert && _text_sdf_frag) {
_pipelines.text_sdf = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.text_sdf =gpu_mod.graphics_pipeline(_gpu, {
vertex: _sprite_vert,
fragment: _text_sdf_frag,
primitive: "triangle",
@@ -563,7 +563,7 @@ function _create_pipelines() {
// MSDF text pipeline
if (_sprite_vert && _text_msdf_frag) {
_pipelines.text_msdf = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.text_msdf =gpu_mod.graphics_pipeline(_gpu, {
vertex: _sprite_vert,
fragment: _text_msdf_frag,
primitive: "triangle",
@@ -598,7 +598,7 @@ function _create_pipelines() {
}
// Accumulator pipeline
if (_blit_vert && _accumulator_frag) {
_pipelines.accumulator = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.accumulator =gpu_mod.graphics_pipeline(_gpu, {
vertex: _blit_vert,
fragment: _accumulator_frag,
primitive: "triangle",
@@ -622,7 +622,7 @@ function _create_pipelines() {
// Shape2D pipeline
if (_sprite_vert && _shape2d_frag) {
_pipelines.shape2d = new gpu_mod.graphics_pipeline(_gpu, {
_pipelines.shape2d =gpu_mod.graphics_pipeline(_gpu, {
vertex: _sprite_vert,
fragment: _shape2d_frag,
primitive: "triangle",
@@ -662,7 +662,7 @@ function _create_pipelines() {
// ========================================================================
function _create_gpu_texture(w, h, pixels) {
var tex = new gpu_mod.texture(_gpu, {
var tex =gpu_mod.texture(_gpu, {
width: w,
height: h,
format: "rgba8",
@@ -673,7 +673,7 @@ function _create_gpu_texture(w, h, pixels) {
})
var size = w * h * 4
var transfer = new gpu_mod.transfer_buffer(_gpu, {
var transfer =gpu_mod.transfer_buffer(_gpu, {
size: size,
usage: "upload"
})
@@ -800,7 +800,7 @@ sdl_gpu.get_or_create_target = function(width, height, key) {
}
// Create new render target texture
var tex = new gpu_mod.texture(_gpu, {
var tex =gpu_mod.texture(_gpu, {
width: width,
height: height,
format: _swapchain_format,
@@ -1450,11 +1450,11 @@ function _render_batch(cmd_buffer, pass, batch, camera, target) {
var vb_size = length(geom.vertices) / 8
var ib_size = length(geom.indices) / 8
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, geom.vertices)
ib_transfer.copy_blob(_gpu, geom.indices)
@@ -1512,11 +1512,11 @@ function _render_texture_ref(cmd_buffer, pass, drawable, camera, target) {
var vb_size = length(geom.vertices) / 8
var ib_size = length(geom.indices) / 8
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, geom.vertices)
ib_transfer.copy_blob(_gpu, geom.indices)
@@ -1626,11 +1626,11 @@ function _render_shape(cmd_buffer, pass, drawable, camera, target) {
var vb_size = 4 * 32
var ib_size = 6 * 2
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, stone(vertex_data))
ib_transfer.copy_blob(_gpu, stone(index_data))
@@ -1747,11 +1747,11 @@ function _render_mesh2d(cmd_buffer, pass, draw, camera, target) {
var vb_size = total_verts * 32
var ib_size = total_indices * 2
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, stone(vertex_data))
ib_transfer.copy_blob(_gpu, stone(index_data))
@@ -1820,11 +1820,11 @@ function _render_text(cmd_buffer, pass, drawable, camera, target) {
var vb_size = num_verts * 32
var ib_size = num_indices * 2
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, interleaved)
ib_transfer.copy_blob(_gpu, indices)
@@ -1927,13 +1927,13 @@ function _get_font_cache(path, size, mode) {
var font
if (mode == 'msdf') {
// MSDF: em_px=size, range_px=4, padding_px=6, sharpness=1.0
font = new staef.msdf_font(data, size, 4.0, 6, 1.0)
font =staef.msdf_font(data, size, 4.0, 6, 1.0)
} else if (mode == 'sdf') {
// SDF: em_px=size, range_px=12, padding_px=14, sharpness=1.0
font = new staef.sdf_font(data, size, 12.0, 14, 1.0)
font =staef.sdf_font(data, size, 12.0, 14, 1.0)
} else {
// Bitmap
font = new staef.font(data, size, false)
font =staef.font(data, size, false)
}
_font_cache[key] = font
return font
@@ -2010,11 +2010,11 @@ function _draw_textured_quad(pass, geom, texture, pipeline, filter) {
var vb_size = length(geom.vertices) / 8
var ib_size = length(geom.indices) / 8
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, geom.vertices)
ib_transfer.copy_blob(_gpu, geom.indices)
@@ -2065,11 +2065,11 @@ function _do_mask(cmd_buffer, cmd) {
var vb_size = length(geom.vertices) / 8
var ib_size = length(geom.indices) / 8
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, geom.vertices)
ib_transfer.copy_blob(_gpu, geom.indices)
@@ -2157,11 +2157,11 @@ function _do_shader_pass(cmd_buffer, cmd, get_swapchain_tex) {
var vb_size = length(geom.vertices) / 8
var ib_size = length(geom.indices) / 8
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, geom.vertices)
ib_transfer.copy_blob(_gpu, geom.indices)
@@ -2296,11 +2296,11 @@ function _do_composite(cmd_buffer, cmd) {
var vb_size = length(geom.vertices) / 8
var ib_size = length(geom.indices) / 8
var vb = new gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib = new gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb =gpu_mod.buffer(_gpu, {size: vb_size, vertex: true})
var ib =gpu_mod.buffer(_gpu, {size: ib_size, index: true})
var vb_transfer = new gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer = new gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
var vb_transfer =gpu_mod.transfer_buffer(_gpu, {size: vb_size, usage: "upload"})
var ib_transfer =gpu_mod.transfer_buffer(_gpu, {size: ib_size, usage: "upload"})
vb_transfer.copy_blob(_gpu, geom.vertices)
ib_transfer.copy_blob(_gpu, geom.indices)