mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 08:11:13 +00:00
LibSoftGPU: Add const to Clipper where possible
This commit is contained in:
parent
0da3a2ddde
commit
3143c4b1df
Notes:
sideshowbarker
2024-07-17 21:16:31 +09:00
Author: https://github.com/ldm5180 Commit: https://github.com/SerenityOS/serenity/commit/3143c4b1df5 Pull-request: https://github.com/SerenityOS/serenity/pull/11735 Reviewed-by: https://github.com/alimpfard Reviewed-by: https://github.com/linusg
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace SoftGPU {
|
||||
|
||||
bool Clipper::point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plane)
|
||||
bool Clipper::point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plane) const
|
||||
{
|
||||
switch (plane) {
|
||||
case ClipPlane::LEFT:
|
||||
|
@ -31,16 +31,16 @@ bool Clipper::point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plan
|
|||
return false;
|
||||
}
|
||||
|
||||
Vertex Clipper::clip_intersection_point(Vertex const& p1, Vertex const& p2, ClipPlane plane_index)
|
||||
Vertex Clipper::clip_intersection_point(Vertex const& p1, Vertex const& p2, ClipPlane plane_index) const
|
||||
{
|
||||
// See https://www.microsoft.com/en-us/research/wp-content/uploads/1978/01/p245-blinn.pdf
|
||||
// "Clipping Using Homogeneous Coordinates" Blinn/Newell, 1978
|
||||
|
||||
float w1 = p1.clip_coordinates.w();
|
||||
float w2 = p2.clip_coordinates.w();
|
||||
float x1 = clip_plane_normals[plane_index].dot(p1.clip_coordinates);
|
||||
float x2 = clip_plane_normals[plane_index].dot(p2.clip_coordinates);
|
||||
float a = (w1 + x1) / ((w1 + x1) - (w2 + x2));
|
||||
float const w1 = p1.clip_coordinates.w();
|
||||
float const w2 = p2.clip_coordinates.w();
|
||||
float const x1 = clip_plane_normals[plane_index].dot(p1.clip_coordinates);
|
||||
float const x2 = clip_plane_normals[plane_index].dot(p2.clip_coordinates);
|
||||
float const a = (w1 + x1) / ((w1 + x1) - (w2 + x2));
|
||||
|
||||
Vertex out;
|
||||
out.position = mix(p1.position, p2.position, a);
|
||||
|
@ -70,12 +70,12 @@ void Clipper::clip_triangle_against_frustum(Vector<Vertex>& input_verts)
|
|||
|
||||
if (point_within_clip_plane(curr_vec.clip_coordinates, static_cast<ClipPlane>(plane))) {
|
||||
if (!point_within_clip_plane(prev_vec.clip_coordinates, static_cast<ClipPlane>(plane))) {
|
||||
auto intersect = clip_intersection_point(prev_vec, curr_vec, static_cast<ClipPlane>(plane));
|
||||
auto const intersect = clip_intersection_point(prev_vec, curr_vec, static_cast<ClipPlane>(plane));
|
||||
write_to->append(intersect);
|
||||
}
|
||||
write_to->append(curr_vec);
|
||||
} else if (point_within_clip_plane(prev_vec.clip_coordinates, static_cast<ClipPlane>(plane))) {
|
||||
auto intersect = clip_intersection_point(prev_vec, curr_vec, static_cast<ClipPlane>(plane));
|
||||
auto const intersect = clip_intersection_point(prev_vec, curr_vec, static_cast<ClipPlane>(plane));
|
||||
write_to->append(intersect);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,8 +49,8 @@ public:
|
|||
void clip_triangle_against_frustum(Vector<Vertex>& input_vecs);
|
||||
|
||||
private:
|
||||
bool point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plane);
|
||||
Vertex clip_intersection_point(Vertex const& vec, Vertex const& prev_vec, ClipPlane plane_index);
|
||||
bool point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plane) const;
|
||||
Vertex clip_intersection_point(Vertex const& vec, Vertex const& prev_vec, ClipPlane plane_index) const;
|
||||
Vector<Vertex> list_a;
|
||||
Vector<Vertex> list_b;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue