-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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;
- Loading branch information
Showing
18 changed files
with
1,439 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
{ | ||
"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" | ||
} | ||
] | ||
} |
Oops, something went wrong.