bevy/assets/models/terrain/Mountains.gltf

144 lines
3.3 KiB
Text
Raw Normal View History

Add Distance and Atmospheric Fog support (#6412) <img width="1392" alt="image" src="https://user-images.githubusercontent.com/418473/203873533-44c029af-13b7-4740-8ea3-af96bd5867c9.png"> <img width="1392" alt="image" src="https://user-images.githubusercontent.com/418473/203873549-36be7a23-b341-42a2-8a9f-ceea8ac7a2b8.png"> # Objective - Add support for the “classic” distance fog effect, as well as a more advanced atmospheric fog effect. ## Solution This PR: - Introduces a new `FogSettings` component that controls distance fog per-camera. - Adds support for three widely used “traditional” fog falloff modes: `Linear`, `Exponential` and `ExponentialSquared`, as well as a more advanced `Atmospheric` fog; - Adds support for directional light influence over fog color; - Extracts fog via `ExtractComponent`, then uses a prepare system that sets up a new dynamic uniform struct (`Fog`), similar to other mesh view types; - Renders fog in PBR material shader, as a final adjustment to the `output_color`, after PBR is computed (but before tone mapping); - Adds a new `StandardMaterial` flag to enable fog; (`fog_enabled`) - Adds convenience methods for easier artistic control when creating non-linear fog types; - Adds documentation around fog. --- ## Changelog ### Added - Added support for distance-based fog effects for PBR materials, controllable per-camera via the new `FogSettings` component; - Added `FogFalloff` enum for selecting between three widely used “traditional” fog falloff modes: `Linear`, `Exponential` and `ExponentialSquared`, as well as a more advanced `Atmospheric` fog;
2023-01-29 15:28:56 +00:00
{
"asset" : {
"generator" : "Khronos glTF Blender I/O v3.3.17",
"version" : "2.0"
},
"extensionsUsed" : [
"KHR_materials_specular",
"KHR_materials_ior"
],
"scene" : 0,
"scenes" : [
{
"name" : "Scene",
"nodes" : [
0,
1
]
}
],
"nodes" : [
{
"mesh" : 0,
"name" : "Grid"
},
{
"mesh" : 0,
"name" : "Grid.001",
"translation" : [
0.0018983177142217755,
-2.7217100068810396e-05,
0.0012765892315655947
]
}
],
"materials" : [
{
"doubleSided" : true,
"extensions" : {
"KHR_materials_specular" : {
"specularColorFactor" : [
0,
0,
0
]
},
"KHR_materials_ior" : {
"ior" : 1.4500000476837158
}
},
"name" : "Material.001",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.12338346652686596,
0.35653680562973022,
0.065849664583802223,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.9980237483978271
}
}
],
"meshes" : [
{
"name" : "Grid",
"primitives" : [
{
"attributes" : {
"POSITION" : 0,
"NORMAL" : 1,
"TEXCOORD_0" : 2
},
"indices" : 3,
"material" : 0
}
]
}
],
"accessors" : [
{
"bufferView" : 0,
"componentType" : 5126,
"count" : 6561,
"max" : [
1.0000003576278687,
0.2493455857038498,
1.0051095485687256
],
"min" : [
-1.0000003576278687,
-0.08555418252944946,
-1.0000003576278687
],
"type" : "VEC3"
},
{
"bufferView" : 1,
"componentType" : 5126,
"count" : 6561,
"type" : "VEC3"
},
{
"bufferView" : 2,
"componentType" : 5126,
"count" : 6561,
"type" : "VEC2"
},
{
"bufferView" : 3,
"componentType" : 5123,
"count" : 38400,
"type" : "SCALAR"
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteLength" : 78732,
"byteOffset" : 0
},
{
"buffer" : 0,
"byteLength" : 78732,
"byteOffset" : 78732
},
{
"buffer" : 0,
"byteLength" : 52488,
"byteOffset" : 157464
},
{
"buffer" : 0,
"byteLength" : 76800,
"byteOffset" : 209952
}
],
"buffers" : [
{
"byteLength" : 286752,
"uri" : "Mountains.bin"
}
]
}