feat(render3d): 23.3 - a .dds beside a .png is uploaded BC-compressed with its whole mip chain
The device's textureCompressionBC is asked for and remembered (gvk_has_bc). tex_load_ex prefers a DX10 .dds with the full chain beside the .png (not for an edge-padded cut-out atlas): texture_dds.ludic reads BC7 / BC5 / BC4, gpu_tex_compressed makes the image with every level and no colour-attachment use (a compressed image is only sampled and copied into), and gvk_tex_upload_blocks copies each level's blocks from one staging buffer. A colour map is BC7 sampled as sRGB, a data map BC7 read as it is. examples/rendering/bc.ludic holds it, in the suite; ludic.lab's plate carries its .dds (its three shots render at 56-60 dB against the .png's). ludic-dev test 307/307, no Vulkan SDK in the environment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
6c663cc87b
commit
8cc4bdf66b
16 changed files with 217 additions and 1 deletions
|
|
@ -263,6 +263,18 @@ function tex_upload(render3d_st: mut Render3dState, px: pointer, srgb: bool, mip
|
|||
function tex_load(render3d_st: mut Render3dState, path: pointer, srgb: bool) -> int { return tex_load_ex(render3d_st, path, srgb, 0) }
|
||||
# ... with `dilate` passes of edge padding for a cut-out atlas (0 = none)
|
||||
function tex_load_ex(render3d_st: mut Render3dState, path: pointer, srgb: bool, dilate: int) -> int {
|
||||
# a .dds encoded beside the .png at build time goes to the GPU compressed, its mips included
|
||||
# (not for a cut-out atlas: its edge padding is made here, from the .png)
|
||||
if render3d_st.gvk_has_bc and dilate == 0 {
|
||||
let dds = dds_path_of(path)
|
||||
if len(dds) > 0 and Fs.exists(dds) {
|
||||
let t = tex_load_dds(render3d_st, dds, srgb)
|
||||
if t != 0 {
|
||||
tex_note_size(render3d_st, t)
|
||||
return t
|
||||
}
|
||||
}
|
||||
}
|
||||
let px = png_decode(render3d_st, path)
|
||||
if px == null { return 0 }
|
||||
if dilate > 0 { tex_dilate(render3d_st, px, 60, dilate) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue