diff options
-rw-r--r-- | Userland/Libraries/LibGL/SoftwareGLContext.cpp | 12 | ||||
-rw-r--r-- | Userland/Libraries/LibSoftGPU/Device.cpp | 6 | ||||
-rw-r--r-- | Userland/Libraries/LibSoftGPU/Device.h | 8 |
3 files changed, 21 insertions, 5 deletions
diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index dcf8225779..d73344159d 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp @@ -2356,7 +2356,17 @@ void SoftwareGLContext::gl_fogi(GLenum pname, GLint param) switch (pname) { case GL_FOG_MODE: - options.fog_mode = param; + switch (param) { + case GL_LINEAR: + options.fog_mode = SoftGPU::FogMode::Linear; + break; + case GL_EXP: + options.fog_mode = SoftGPU::FogMode::Exp; + break; + case GL_EXP2: + options.fog_mode = SoftGPU::FogMode::Exp2; + break; + } break; default: RETURN_WITH_ERROR_IF(true, GL_INVALID_ENUM); diff --git a/Userland/Libraries/LibSoftGPU/Device.cpp b/Userland/Libraries/LibSoftGPU/Device.cpp index 71b00eb70d..0d7a6c6149 100644 --- a/Userland/Libraries/LibSoftGPU/Device.cpp +++ b/Userland/Libraries/LibSoftGPU/Device.cpp @@ -687,13 +687,13 @@ void Device::submit_triangle(const Triangle& triangle, Vector<size_t> const& ena if (m_options.fog_enabled) { float factor = 0.0f; switch (m_options.fog_mode) { - case GL_LINEAR: + case FogMode::Linear: factor = (m_options.fog_end - z) / (m_options.fog_end - m_options.fog_start); break; - case GL_EXP: + case FogMode::Exp: factor = exp(-((m_options.fog_density * z))); break; - case GL_EXP2: + case FogMode::Exp2: factor = exp(-((m_options.fog_density * z) * (m_options.fog_density * z))); break; default: diff --git a/Userland/Libraries/LibSoftGPU/Device.h b/Userland/Libraries/LibSoftGPU/Device.h index 281600439e..0f04b05ce4 100644 --- a/Userland/Libraries/LibSoftGPU/Device.h +++ b/Userland/Libraries/LibSoftGPU/Device.h @@ -62,6 +62,12 @@ enum class DepthTestFunction { Greater, }; +enum FogMode { + Linear, + Exp, + Exp2 +}; + enum class WindingOrder { Clockwise, CounterClockwise, @@ -84,7 +90,7 @@ struct RasterizerOptions { GLenum polygon_mode { GL_FILL }; FloatVector4 fog_color { 0.0f, 0.0f, 0.0f, 0.0f }; float fog_density { 1.0f }; - GLenum fog_mode { GL_EXP }; + FogMode fog_mode { FogMode::Exp }; bool fog_enabled { false }; float fog_start { 0.0f }; float fog_end { 1.0f }; |