diff options
| author | Valentin Popov <valentin@popov.link> | 2026-10-18 06:28:16 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-10-18 06:28:16 +0300 |
| commit | c77c078efee9ece70c3f82793ed002f82a95eb85 (patch) | |
| tree | 2e12bd0f82dcf2a1b728b3a00e8477414d6fb90f /adapters/fparkan-render-vulkan/shaders | |
| parent | d97c8d40bfbae097435f10e46ecad5431504c729 (diff) | |
| download | fparkan-c77c078efee9ece70c3f82793ed002f82a95eb85.tar.xz fparkan-c77c078efee9ece70c3f82793ed002f82a95eb85.zip | |
fix: preserve native sky sprite screen depth
Diffstat (limited to 'adapters/fparkan-render-vulkan/shaders')
| -rw-r--r-- | adapters/fparkan-render-vulkan/shaders/triangle.vert | 9 | ||||
| -rw-r--r-- | adapters/fparkan-render-vulkan/shaders/triangle.vert.spv | bin | 18580 -> 19136 bytes |
2 files changed, 6 insertions, 3 deletions
diff --git a/adapters/fparkan-render-vulkan/shaders/triangle.vert b/adapters/fparkan-render-vulkan/shaders/triangle.vert index 201c31a..83a1751 100644 --- a/adapters/fparkan-render-vulkan/shaders/triangle.vert +++ b/adapters/fparkan-render-vulkan/shaders/triangle.vert @@ -232,9 +232,10 @@ void main() { out_uv = in_uv; out_detail_uv = in_detail_uv; out_overlay_alpha = in_overlay_alpha; - out_fog_factor = native_fog_factor(in_position); int mode = int(round(material.material_mode)); int combiner_mode = mode & 3; + bool screen_tl = (mode & 8) != 0; + out_fog_factor = screen_tl ? 0.0 : native_fog_factor(in_position); if (combiner_mode == 0) { LightingTerms base_terms = native_material_lighting( in_position, @@ -262,12 +263,14 @@ void main() { out_overlay_diffuse = vec3(1.0); out_overlay_specular = vec3(0.0); } - vec4 clip_position = frame.clip_from_world * vec4(in_position, 1.0); + vec4 clip_position = screen_tl + ? vec4(in_position, 1.0) + : frame.clip_from_world * vec4(in_position, 1.0); // Sky far-depth is a Vulkan projection choice for layers authored around // the camera. Keep world positions, normals, and UVs intact while placing // the resulting primitive at the far depth; this does not assert native // D3D depth-bit equivalence. - if ((mode & 4) != 0) { + if ((mode & 4) != 0 && !screen_tl) { clip_position.z = clip_position.w; } gl_Position = clip_position; diff --git a/adapters/fparkan-render-vulkan/shaders/triangle.vert.spv b/adapters/fparkan-render-vulkan/shaders/triangle.vert.spv Binary files differindex 9574e1c..535bde0 100644 --- a/adapters/fparkan-render-vulkan/shaders/triangle.vert.spv +++ b/adapters/fparkan-render-vulkan/shaders/triangle.vert.spv |
