vkd3d-shader/ir: Implement exponential fog.

This commit is contained in:
Elizabeth Figura
2024-11-13 19:39:35 -06:00
committed by Henri Verbeet
parent 1fbbc82f3a
commit d56601c8d0
Notes: Henri Verbeet 2024-12-02 17:19:05 +01:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1265
7 changed files with 142 additions and 11 deletions

View File

@@ -500,6 +500,32 @@ enum vkd3d_shader_fog_fragment_mode
* Equivalently, the fog interpolation factor is 1.
*/
VKD3D_SHADER_FOG_FRAGMENT_NONE = 0x0,
/**
* The fog interpolation factor is 2^-(k * c).
*
* In order to implement traditional exponential fog, as present in
* Direct3D and OpenGL, i.e.
*
* e^-(density * c)
*
* set
*
* k = density * log₂(e)
*/
VKD3D_SHADER_FOG_FRAGMENT_EXP = 0x1,
/**
* The fog interpolation factor is 2^-((k * c)²).
*
* In order to implement traditional square-exponential fog, as present in
* Direct3D and OpenGL, i.e.
*
* e^-((density * c)²)
*
* set
*
* k = density * √log₂(e)
*/
VKD3D_SHADER_FOG_FRAGMENT_EXP2 = 0x2,
/**
* The fog interpolation factor is (E - c) * k.
*
@@ -871,7 +897,7 @@ enum vkd3d_shader_parameter_name
*/
VKD3D_SHADER_PARAMETER_NAME_FOG_END,
/**
* Scale value for linear fog.
* Scale value for fog.
* See VKD3D_SHADER_PARAMETER_NAME_FOG_FRAGMENT_MODE for documentation of
* fog.
*