mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +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:
parent
24c76741e8
commit
1904be0370
3 changed files with 6 additions and 4 deletions
|
@ -917,7 +917,8 @@ void SoftwareGLContext::gl_cull_face(GLenum cull_mode)
|
||||||
m_culled_sides = cull_mode;
|
m_culled_sides = cull_mode;
|
||||||
|
|
||||||
auto rasterizer_options = m_rasterizer.options();
|
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);
|
m_rasterizer.set_options(rasterizer_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -636,10 +636,10 @@ void Device::draw_primitives(GLenum primitive_type, FloatMatrix4x4 const& transf
|
||||||
if (m_options.enable_culling) {
|
if (m_options.enable_culling) {
|
||||||
bool is_front = (m_options.front_face == WindingOrder::CounterClockwise ? area < 0 : area > 0);
|
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;
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,7 +84,8 @@ struct RasterizerOptions {
|
||||||
float depth_offset_constant { 0 };
|
float depth_offset_constant { 0 };
|
||||||
bool enable_culling { false };
|
bool enable_culling { false };
|
||||||
WindingOrder front_face { WindingOrder::CounterClockwise };
|
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;
|
inline static constexpr size_t const num_samplers = 32;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue