mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Update wgpu, cleanup a bit of commented shader code, improve sprite LOD selection code
This commit is contained in:
parent
3c86d49f5b
commit
94f9995bff
42
Cargo.lock
generated
42
Cargo.lock
generated
@ -1893,7 +1893,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-auxil"
|
name = "gfx-auxil"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fxhash",
|
"fxhash",
|
||||||
"gfx-hal",
|
"gfx-hal",
|
||||||
@ -1903,7 +1903,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-backend-dx11"
|
name = "gfx-backend-dx11"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
@ -1924,7 +1924,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-backend-dx12"
|
name = "gfx-backend-dx12"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bit-set",
|
"bit-set",
|
||||||
@ -1945,7 +1945,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-backend-empty"
|
name = "gfx-backend-empty"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gfx-hal",
|
"gfx-hal",
|
||||||
"log",
|
"log",
|
||||||
@ -1955,7 +1955,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-backend-gl"
|
name = "gfx-backend-gl"
|
||||||
version = "0.8.1"
|
version = "0.8.1"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
@ -1976,7 +1976,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-backend-metal"
|
name = "gfx-backend-metal"
|
||||||
version = "0.8.1"
|
version = "0.8.1"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
@ -2000,7 +2000,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-backend-vulkan"
|
name = "gfx-backend-vulkan"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"ash",
|
"ash",
|
||||||
@ -2022,7 +2022,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "gfx-hal"
|
name = "gfx-hal"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"naga",
|
"naga",
|
||||||
@ -3070,7 +3070,7 @@ checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "naga"
|
name = "naga"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
source = "git+https://github.com/gfx-rs/naga.git?rev=3a0f0144112ff621dd7f731bf455adf6cab19164#3a0f0144112ff621dd7f731bf455adf6cab19164"
|
source = "git+https://github.com/gfx-rs/naga?tag=gfx-25#057d03ad86f18e3bb3866b20901d8d4e892dd3d6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bit-set",
|
"bit-set",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
@ -3079,6 +3079,7 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"petgraph 0.5.1",
|
"petgraph 0.5.1",
|
||||||
|
"rose_tree",
|
||||||
"spirv_headers",
|
"spirv_headers",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
]
|
]
|
||||||
@ -4177,7 +4178,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "range-alloc"
|
name = "range-alloc"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
source = "git+https://github.com/gfx-rs/gfx.git?rev=e305dcca3557923a6a8810162d8dd09cb45a43a6#e305dcca3557923a6a8810162d8dd09cb45a43a6"
|
source = "git+https://github.com/gfx-rs/gfx?rev=27a1dae3796d33d23812f2bb8c7e3b5aea18b521#27a1dae3796d33d23812f2bb8c7e3b5aea18b521"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "raw-window-handle"
|
name = "raw-window-handle"
|
||||||
@ -4398,6 +4399,15 @@ version = "0.0.6"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "84348444bd7ad45729d0c49a4240d7cdc11c9d512c06c5ad1835c1ad4acda6db"
|
checksum = "84348444bd7ad45729d0c49a4240d7cdc11c9d512c06c5ad1835c1ad4acda6db"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rose_tree"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "284de9dae38774e2813aaabd7e947b4a6fe9b8c58c2309f754a487cdd50de1c2"
|
||||||
|
dependencies = [
|
||||||
|
"petgraph 0.5.1",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rusqlite"
|
name = "rusqlite"
|
||||||
version = "0.24.2"
|
version = "0.24.2"
|
||||||
@ -6645,8 +6655,8 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu"
|
name = "wgpu"
|
||||||
version = "0.8.1"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/gfx-rs/wgpu-rs.git?rev=2b0149e5bd36fc70c1687afd4b196fd902c85e77#2b0149e5bd36fc70c1687afd4b196fd902c85e77"
|
source = "git+https://github.com/gfx-rs/wgpu-rs.git?rev=7486bdad64bb5d17b709ecccb41e063469efff88#7486bdad64bb5d17b709ecccb41e063469efff88"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
@ -6665,9 +6675,8 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-core"
|
name = "wgpu-core"
|
||||||
version = "0.8.1"
|
version = "0.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=53eab747a32414232be45d47cae8a43a369395d0#53eab747a32414232be45d47cae8a43a369395d0"
|
||||||
checksum = "1d56c368fc0e6f3927c711d2b55a51ad4321218efc0239c4acf69e456ab70399"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
@ -6707,8 +6716,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "wgpu-types"
|
name = "wgpu-types"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/gfx-rs/wgpu?rev=53eab747a32414232be45d47cae8a43a369395d0#53eab747a32414232be45d47cae8a43a369395d0"
|
||||||
checksum = "aa248d90c8e6832269b8955bf800e8241f942c25e18a235b7752226804d21556"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"serde",
|
"serde",
|
||||||
|
23
Cargo.toml
23
Cargo.toml
@ -111,19 +111,18 @@ nativeBuildInputs = ["pkg-config"]
|
|||||||
winit = { git = "https://gitlab.com/veloren/winit.git", branch = "macos-test-spiffed" }
|
winit = { git = "https://gitlab.com/veloren/winit.git", branch = "macos-test-spiffed" }
|
||||||
vek = { git = "https://gitlab.com/veloren/vek.git", branch = "fix_intrinsics2" }
|
vek = { git = "https://gitlab.com/veloren/vek.git", branch = "fix_intrinsics2" }
|
||||||
# patch wgpu so we can use wgpu-profiler crate
|
# patch wgpu so we can use wgpu-profiler crate
|
||||||
# also points to 0.8 branch so we can use/and patch 0.8 naga/gfx (since a new tag isn't out yet)
|
wgpu = { git = "https://github.com/gfx-rs/wgpu-rs.git", rev = "7486bdad64bb5d17b709ecccb41e063469efff88" }
|
||||||
wgpu = { git = "https://github.com/gfx-rs/wgpu-rs.git", rev = "2b0149e5bd36fc70c1687afd4b196fd902c85e77" }
|
|
||||||
|
|
||||||
# use the latest fixes in naga (remove when updates trickle down to wgpu-rs)
|
# # use the latest fixes in naga (remove when updates trickle down to wgpu-rs)
|
||||||
naga = { git = "https://github.com/gfx-rs/naga.git", rev = "3a0f0144112ff621dd7f731bf455adf6cab19164" }
|
# naga = { git = "https://github.com/gfx-rs/naga.git", rev = "3a0f0144112ff621dd7f731bf455adf6cab19164" }
|
||||||
# use the latest fixes in gfx (remove when updates trickle down to wgpu-rs)
|
# # use the latest fixes in gfx (remove when updates trickle down to wgpu-rs)
|
||||||
gfx-hal = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-hal = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
gfx-backend-empty = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-backend-empty = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
gfx-backend-vulkan = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-backend-vulkan = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
gfx-backend-gl = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-backend-gl = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
gfx-backend-dx12 = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-backend-dx12 = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
gfx-backend-dx11 = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-backend-dx11 = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
gfx-backend-metal = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
# gfx-backend-metal = { git = "https://github.com/gfx-rs/gfx.git", rev = "e305dcca3557923a6a8810162d8dd09cb45a43a6" }
|
||||||
|
|
||||||
# # Uncomment this to use a local fork of wgpu (for testing purposes)
|
# # Uncomment this to use a local fork of wgpu (for testing purposes)
|
||||||
# [patch.'https://github.com/gfx-rs/wgpu']
|
# [patch.'https://github.com/gfx-rs/wgpu']
|
||||||
|
@ -205,41 +205,6 @@ float ShadowCalculationDirected(in vec3 fragPos)//in vec4 /*light_pos[2]*/sun_po
|
|||||||
// orig_pos.y = n: warp_pos.y = 2*(1-f/n)*n/(f-n) + 1 = 2*(n-f)/(f-n) + 1 = 2 * -1 + 1 = -1, sun_pos.y = (-1 - -1) / 2 = 0
|
// orig_pos.y = n: warp_pos.y = 2*(1-f/n)*n/(f-n) + 1 = 2*(n-f)/(f-n) + 1 = 2 * -1 + 1 = -1, sun_pos.y = (-1 - -1) / 2 = 0
|
||||||
// orig_pos.y = f: warp_pos.y = 2*(1-f/f)*n/(f-n) + 1 = 2*(1-1)*n/(f-n) + 1 = 2 * 0 * n/(f-n) + 1 = 1, sun_pos.y = (1 - -1) / 2 = 1
|
// orig_pos.y = f: warp_pos.y = 2*(1-f/f)*n/(f-n) + 1 = 2*(1-1)*n/(f-n) + 1 = 2 * 0 * n/(f-n) + 1 = 1, sun_pos.y = (1 - -1) / 2 = 1
|
||||||
//
|
//
|
||||||
// 2*(1-64/(1/((0-1)*63/2-1/64)))*1/63+1
|
|
||||||
//
|
|
||||||
// 2*(1-f/x)*n/(f-n) + 1 = 0
|
|
||||||
// 2*(1-f/x)*n/(f-n) = -1
|
|
||||||
//
|
|
||||||
// (1-f/x) = -(f-n)/(2*n)
|
|
||||||
// 1 + (f-n)/(2*n) = f/x
|
|
||||||
// x = f/(1 + 0.5 * (f-n)/n)
|
|
||||||
// = 2*f/(1 + f/n)
|
|
||||||
// = 2*f*n/(f + n)
|
|
||||||
// = 2/(1/n + 1/f)
|
|
||||||
//
|
|
||||||
// 2/(1/(64/1) + 1/64) = 64 (but has n = f = 64)
|
|
||||||
// 2/(1/(64/3) + 1/64) = 32
|
|
||||||
// 2/(1/(64/7) + 1/64) = 16
|
|
||||||
// 2/(1/(64/15) + 1/64) = 8
|
|
||||||
// 2/(1/(64/31) + 1/64) = 4
|
|
||||||
// 2/(1/(64/63) + 1/64) = 2
|
|
||||||
// 2/(1/(64/127) + 1/64) = 1 (but has f < n)
|
|
||||||
//
|
|
||||||
// 2*(1-64/(64/127))*64/127/(64-64/127)+1
|
|
||||||
//
|
|
||||||
// (with normed n)
|
|
||||||
// = 2/(1/n + 1/(1+n))
|
|
||||||
// = 2*n*(1+n)/(1+2n)
|
|
||||||
// = 1/((1 +2n)/(2n(1+n)))
|
|
||||||
// = 1/(1/(2n(1+n)) + 1/(1+n))
|
|
||||||
// = (1 + n)/(1 + 0.5/n)
|
|
||||||
// 2*64*1/(64+1)
|
|
||||||
//
|
|
||||||
// 2*(1-64/(64/(1 + 0.5 * 63/1)))*1/63+1
|
|
||||||
//
|
|
||||||
// sun_pos.xy = sun_pos.w - sun_pos.xy;
|
|
||||||
// sun_pos.xy = sun_pos.xy * 0.5 + 0.5;
|
|
||||||
// sun_pos.z -= sun_pos.w * bias;
|
|
||||||
float visibility = textureProj(sampler2DShadow(t_directed_shadow_maps, s_directed_shadow_maps), sun_pos);
|
float visibility = textureProj(sampler2DShadow(t_directed_shadow_maps, s_directed_shadow_maps), sun_pos);
|
||||||
/* float visibilityLeft = textureProj(t_directed_shadow_maps, sun_shadow.texture_mat * vec4(fragPos + vec3(0.0, -diskRadius, 0.0), 1.0));
|
/* float visibilityLeft = textureProj(t_directed_shadow_maps, sun_shadow.texture_mat * vec4(fragPos + vec3(0.0, -diskRadius, 0.0), 1.0));
|
||||||
float visibilityRight = textureProj(t_directed_shadow_maps, sun_shadow.texture_mat * vec4(fragPos + vec3(0.0, diskRadius, 0.0), 1.0)); */
|
float visibilityRight = textureProj(t_directed_shadow_maps, sun_shadow.texture_mat * vec4(fragPos + vec3(0.0, diskRadius, 0.0), 1.0)); */
|
||||||
|
@ -45,7 +45,7 @@ i18n = {package = "veloren-i18n", path = "i18n"}
|
|||||||
|
|
||||||
# Graphics
|
# Graphics
|
||||||
winit = {version = "0.24.0", features = ["serde"]}
|
winit = {version = "0.24.0", features = ["serde"]}
|
||||||
wgpu = { version = "0.8.1", features = ["trace"] }
|
wgpu = { version = "=0.8.0", features = ["trace"] }
|
||||||
wgpu-profiler = { git = "https://github.com/Imberflur/wgpu-profiler", tag = "wgpu-0.8" }
|
wgpu-profiler = { git = "https://github.com/Imberflur/wgpu-profiler", tag = "wgpu-0.8" }
|
||||||
bytemuck = { version="1.4", features=["derive"] }
|
bytemuck = { version="1.4", features=["derive"] }
|
||||||
shaderc = "0.6.2"
|
shaderc = "0.6.2"
|
||||||
|
@ -294,7 +294,8 @@ fn create_shader_module(
|
|||||||
Ok(device.create_shader_module(&wgpu::ShaderModuleDescriptor {
|
Ok(device.create_shader_module(&wgpu::ShaderModuleDescriptor {
|
||||||
label: Some(&label),
|
label: Some(&label),
|
||||||
source: wgpu::ShaderSource::SpirV(Cow::Borrowed(spv.as_binary())),
|
source: wgpu::ShaderSource::SpirV(Cow::Borrowed(spv.as_binary())),
|
||||||
flags: wgpu::ShaderFlags::empty(), // TODO: renable wgpu::ShaderFlags::VALIDATION,
|
flags: wgpu::ShaderFlags::empty(),
|
||||||
|
// TODO: renable // flags: wgpu::ShaderFlags::VALIDATION,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1480,7 +1480,6 @@ impl<V: RectRasterableVol> Terrain<V> {
|
|||||||
// TODO: move to separate functions
|
// TODO: move to separate functions
|
||||||
span!(guard, "Terrain sprites");
|
span!(guard, "Terrain sprites");
|
||||||
let chunk_size = V::RECT_SIZE.map(|e| e as f32);
|
let chunk_size = V::RECT_SIZE.map(|e| e as f32);
|
||||||
let chunk_mag = (chunk_size * (f32::consts::SQRT_2 * 0.5)).magnitude_squared();
|
|
||||||
|
|
||||||
let sprite_low_detail_distance = sprite_render_distance * 0.75;
|
let sprite_low_detail_distance = sprite_render_distance * 0.75;
|
||||||
let sprite_mid_detail_distance = sprite_render_distance * 0.5;
|
let sprite_mid_detail_distance = sprite_render_distance * 0.5;
|
||||||
@ -1499,31 +1498,15 @@ impl<V: RectRasterableVol> Terrain<V> {
|
|||||||
|
|
||||||
let chunk_center = pos.map2(chunk_size, |e, sz| (e as f32 + 0.5) * sz);
|
let chunk_center = pos.map2(chunk_size, |e, sz| (e as f32 + 0.5) * sz);
|
||||||
let focus_dist_sqrd = Vec2::from(focus_pos).distance_squared(chunk_center);
|
let focus_dist_sqrd = Vec2::from(focus_pos).distance_squared(chunk_center);
|
||||||
let dist_sqrd =
|
let dist_sqrd = Aabr {
|
||||||
Vec2::from(cam_pos)
|
min: chunk_center - chunk_size * 0.5,
|
||||||
.distance_squared(chunk_center)
|
max: chunk_center + chunk_size * 0.5,
|
||||||
.min(Vec2::from(cam_pos).distance_squared(chunk_center - chunk_size * 0.5))
|
}
|
||||||
.min(Vec2::from(cam_pos).distance_squared(
|
.projected_point(cam_pos.xy())
|
||||||
chunk_center - chunk_size.x * 0.5 + chunk_size.y * 0.5,
|
.distance_squared(cam_pos.xy());
|
||||||
))
|
|
||||||
.min(
|
|
||||||
Vec2::from(cam_pos).distance_squared(chunk_center + chunk_size.x * 0.5),
|
|
||||||
)
|
|
||||||
.min(Vec2::from(cam_pos).distance_squared(
|
|
||||||
chunk_center + chunk_size.x * 0.5 - chunk_size.y * 0.5,
|
|
||||||
));
|
|
||||||
if focus_dist_sqrd < sprite_render_distance.powi(2) {
|
if focus_dist_sqrd < sprite_render_distance.powi(2) {
|
||||||
// TODO: do we really need this configurement by wind-sway, if not remove
|
let lod_level = if dist_sqrd < sprite_high_detail_distance.powi(2) {
|
||||||
// commented code, if so store the max wind sway of sprites in each chunk
|
|
||||||
let lod_level = /*let SpriteData { model, locals, .. } = if kind
|
|
||||||
.0
|
|
||||||
.elim_case_pure(&self.sprite_config.0)
|
|
||||||
.as_ref()
|
|
||||||
.map(|config| config.wind_sway >= 0.4)
|
|
||||||
.unwrap_or(false)
|
|
||||||
&&*/ if dist_sqrd <= chunk_mag
|
|
||||||
|| dist_sqrd < sprite_high_detail_distance.powi(2)
|
|
||||||
{
|
|
||||||
0
|
0
|
||||||
} else if dist_sqrd < sprite_hid_detail_distance.powi(2) {
|
} else if dist_sqrd < sprite_hid_detail_distance.powi(2) {
|
||||||
1
|
1
|
||||||
|
Loading…
Reference in New Issue
Block a user