Merge pull request #67320 from Calinou/fix-volumetric-fog-low-density
Fix volumetric fog not rendering at densities lower than or equal to 0.001
This commit is contained in:
commit
0aa2d70613
3 changed files with 3 additions and 1 deletions
|
@ -301,6 +301,7 @@
|
|||
<member name="volumetric_fog_density" type="float" setter="set_volumetric_fog_density" getter="get_volumetric_fog_density" default="0.05">
|
||||
The base [i]exponential[/i] density of the volumetric fog. Set this to the lowest density you want to have globally. [FogVolume]s can be used to add to or subtract from this density in specific areas. Fog rendering is exponential as in real life.
|
||||
A value of [code]0.0[/code] disables global volumetric fog while allowing [FogVolume]s to display volumetric fog in specific areas.
|
||||
To make volumetric fog work as a volumetric [i]lighting[/i] solution, set [member volumetric_fog_density] to the lowest non-zero value ([code]0.0001[/code]) then increase lights' [member Light3D.light_volumetric_fog_energy] to values between [code]10000[/code] and [code]100000[/code] to compensate for the very low density.
|
||||
</member>
|
||||
<member name="volumetric_fog_detail_spread" type="float" setter="set_volumetric_fog_detail_spread" getter="get_volumetric_fog_detail_spread" default="2.0">
|
||||
The distribution of size down the length of the froxel buffer. A higher value compresses the froxels closer to the camera and places more detail closer to the camera.
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
</member>
|
||||
<member name="density" type="float" setter="set_density" getter="get_density" default="1.0">
|
||||
The density of the [FogVolume]. Denser objects are more opaque, but may suffer from under-sampling artifacts that look like stripes. Negative values can be used to subtract fog from other [FogVolume]s or global volumetric fog.
|
||||
[b]Note:[/b] Due to limited precision, [member density] values between [code]-0.001[/code] and [code]0.001[/code] (exclusive) act like [code]0.0[/code]. This does not apply to [member Environment.volumetric_fog_density].
|
||||
</member>
|
||||
<member name="density_texture" type="Texture3D" setter="set_density_texture" getter="get_density_texture">
|
||||
The 3D texture that is used to scale the [member density] of the [FogVolume]. This can be used to vary fog density within the [FogVolume] with any kind of static pattern. For animated effects, consider using a custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog shader[/url].
|
||||
|
|
|
@ -381,7 +381,7 @@ void main() {
|
|||
float cell_depth_size = abs(view_pos.z - get_depth_at_pos(fog_cell_size.z, pos.z + 1));
|
||||
//compute directional lights
|
||||
|
||||
if (total_density > 0.001) {
|
||||
if (total_density > 0.00005) {
|
||||
for (uint i = 0; i < params.directional_light_count; i++) {
|
||||
if (directional_lights.data[i].volumetric_fog_energy > 0.001) {
|
||||
vec3 shadow_attenuation = vec3(1.0);
|
||||
|
|
Loading…
Reference in a new issue