LibGL+LibSoftGPU: Enumize material front/back face selection

This commit is contained in:
Jelle Raaijmakers 2022-01-16 02:09:27 +01:00 committed by Andreas Kling
parent 64dfb3a28f
commit 3609ffc450
Notes: sideshowbarker 2024-07-17 20:42:57 +09:00
5 changed files with 24 additions and 16 deletions

View File

@ -17,6 +17,7 @@
#include <LibGfx/Painter.h>
#include <LibGfx/Vector4.h>
#include <LibSoftGPU/Device.h>
#include <LibSoftGPU/Enums.h>
using AK::dbgln;
@ -3089,9 +3090,8 @@ void SoftwareGLContext::sync_light_state()
m_rasterizer.set_light_state(light_id, light);
}
for (auto material_id = 0u; material_id < 2u; material_id++) {
auto update_material_state = [&](SoftGPU::Face face, SoftGPU::Material const& current_material_state) {
SoftGPU::Material material;
auto const& current_material_state = m_material_states.at(material_id);
material.ambient = current_material_state.ambient;
material.diffuse = current_material_state.diffuse;
@ -3103,8 +3103,10 @@ void SoftwareGLContext::sync_light_state()
material.diffuse_color_index = current_material_state.diffuse_color_index;
material.specular_color_index = current_material_state.specular_color_index;
m_rasterizer.set_material_state(material_id, material);
}
m_rasterizer.set_material_state(face, material);
};
update_material_state(SoftGPU::Face::Front, m_material_states[Face::Front]);
update_material_state(SoftGPU::Face::Back, m_material_states[Face::Back]);
}
void SoftwareGLContext::sync_device_texcoord_config()
@ -3261,14 +3263,14 @@ void SoftwareGLContext::gl_materialf(GLenum face, GLenum pname, GLfloat param)
switch (face) {
case GL_FRONT:
m_material_states.at(MaterialFace::Front).shininess = param;
m_material_states[Face::Front].shininess = param;
break;
case GL_BACK:
m_material_states.at(MaterialFace::Back).shininess = param;
m_material_states[Face::Back].shininess = param;
break;
case GL_FRONT_AND_BACK:
m_material_states.at(MaterialFace::Front).shininess = param;
m_material_states.at(MaterialFace::Back).shininess = param;
m_material_states[Face::Front].shininess = param;
m_material_states[Face::Back].shininess = param;
break;
default:
VERIFY_NOT_REACHED();
@ -3310,14 +3312,14 @@ void SoftwareGLContext::gl_materialfv(GLenum face, GLenum pname, GLfloat const*
switch (face) {
case GL_FRONT:
update_material(m_material_states.at(MaterialFace::Front), pname, params);
update_material(m_material_states[Face::Front], pname, params);
break;
case GL_BACK:
update_material(m_material_states.at(MaterialFace::Back), pname, params);
update_material(m_material_states[Face::Back], pname, params);
break;
case GL_FRONT_AND_BACK:
update_material(m_material_states.at(MaterialFace::Front), pname, params);
update_material(m_material_states.at(MaterialFace::Back), pname, params);
update_material(m_material_states[Face::Front], pname, params);
update_material(m_material_states[Face::Back], pname, params);
break;
}

View File

@ -41,7 +41,7 @@ struct ContextParameter {
} value;
};
enum MaterialFace : u8 {
enum Face {
Front = 0,
Back = 1,
};

View File

@ -1143,9 +1143,9 @@ void Device::set_light_state(unsigned int light_id, Light const& light)
m_lights.at(light_id) = light;
}
void Device::set_material_state(unsigned int material_id, Material const& material)
void Device::set_material_state(Face face, Material const& material)
{
m_materials.at(material_id) = material;
m_materials[face] = material;
}
void Device::set_raster_position(RasterPosition const& raster_position)

View File

@ -1,5 +1,6 @@
/*
* Copyright (c) 2021, Stephan Unverwerth <s.unverwerth@serenityos.org>
* Copyright (c) 2022, Jelle Raaijmakers <jelle@gmta.nl>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -118,7 +119,7 @@ public:
void set_sampler_config(unsigned, SamplerConfig const&);
void set_light_state(unsigned, Light const&);
void set_material_state(unsigned, Material const&);
void set_material_state(Face, Material const&);
RasterPosition raster_position() const { return m_raster_position; }
void set_raster_position(RasterPosition const& raster_position);

View File

@ -58,6 +58,11 @@ enum class DepthTestFunction {
Greater,
};
enum Face {
Front = 0,
Back = 1,
};
enum FogMode {
Linear,
Exp,