1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:07:47 +00:00

LibSoftGPU: Remove OpenGL type for culled side selection

Replaces the GLenum in RasterizerConfig, that selects the triangle sides
to be culled, with two booleans.
This commit is contained in:
Stephan Unverwerth 2021-12-22 23:23:15 +01:00 committed by Brian Gianforcaro
parent 24c76741e8
commit 1904be0370
3 changed files with 6 additions and 4 deletions

View file

@ -917,7 +917,8 @@ void SoftwareGLContext::gl_cull_face(GLenum cull_mode)
m_culled_sides = cull_mode;
auto rasterizer_options = m_rasterizer.options();
rasterizer_options.culled_sides = cull_mode;
rasterizer_options.cull_back = cull_mode == GL_BACK || cull_mode == GL_FRONT_AND_BACK;
rasterizer_options.cull_front = cull_mode == GL_FRONT || cull_mode == GL_FRONT_AND_BACK;
m_rasterizer.set_options(rasterizer_options);
}

View file

@ -636,10 +636,10 @@ void Device::draw_primitives(GLenum primitive_type, FloatMatrix4x4 const& transf
if (m_options.enable_culling) {
bool is_front = (m_options.front_face == WindingOrder::CounterClockwise ? area < 0 : area > 0);
if (is_front && (m_options.culled_sides == GL_FRONT || m_options.culled_sides == GL_FRONT_AND_BACK))
if (!is_front && m_options.cull_back)
continue;
if (!is_front && (m_options.culled_sides == GL_BACK || m_options.culled_sides == GL_FRONT_AND_BACK))
if (is_front && m_options.cull_front)
continue;
}

View file

@ -84,7 +84,8 @@ struct RasterizerOptions {
float depth_offset_constant { 0 };
bool enable_culling { false };
WindingOrder front_face { WindingOrder::CounterClockwise };
GLenum culled_sides { GL_BACK };
bool cull_back { true };
bool cull_front { false };
};
inline static constexpr size_t const num_samplers = 32;