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 {
|
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) {
|
switch (plane) {
|
||||||
case ClipPlane::LEFT:
|
case ClipPlane::LEFT:
|
||||||
|
@ -31,16 +31,16 @@ bool Clipper::point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plan
|
||||||
return false;
|
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
|
// See https://www.microsoft.com/en-us/research/wp-content/uploads/1978/01/p245-blinn.pdf
|
||||||
// "Clipping Using Homogeneous Coordinates" Blinn/Newell, 1978
|
// "Clipping Using Homogeneous Coordinates" Blinn/Newell, 1978
|
||||||
|
|
||||||
float w1 = p1.clip_coordinates.w();
|
float const w1 = p1.clip_coordinates.w();
|
||||||
float w2 = p2.clip_coordinates.w();
|
float const w2 = p2.clip_coordinates.w();
|
||||||
float x1 = clip_plane_normals[plane_index].dot(p1.clip_coordinates);
|
float const x1 = clip_plane_normals[plane_index].dot(p1.clip_coordinates);
|
||||||
float x2 = clip_plane_normals[plane_index].dot(p2.clip_coordinates);
|
float const x2 = clip_plane_normals[plane_index].dot(p2.clip_coordinates);
|
||||||
float a = (w1 + x1) / ((w1 + x1) - (w2 + x2));
|
float const a = (w1 + x1) / ((w1 + x1) - (w2 + x2));
|
||||||
|
|
||||||
Vertex out;
|
Vertex out;
|
||||||
out.position = mix(p1.position, p2.position, a);
|
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(curr_vec.clip_coordinates, static_cast<ClipPlane>(plane))) {
|
||||||
if (!point_within_clip_plane(prev_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(intersect);
|
||||||
}
|
}
|
||||||
write_to->append(curr_vec);
|
write_to->append(curr_vec);
|
||||||
} else if (point_within_clip_plane(prev_vec.clip_coordinates, static_cast<ClipPlane>(plane))) {
|
} 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);
|
write_to->append(intersect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,8 @@ public:
|
||||||
void clip_triangle_against_frustum(Vector<Vertex>& input_vecs);
|
void clip_triangle_against_frustum(Vector<Vertex>& input_vecs);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool point_within_clip_plane(FloatVector4 const& vertex, ClipPlane plane);
|
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);
|
Vertex clip_intersection_point(Vertex const& vec, Vertex const& prev_vec, ClipPlane plane_index) const;
|
||||||
Vector<Vertex> list_a;
|
Vector<Vertex> list_a;
|
||||||
Vector<Vertex> list_b;
|
Vector<Vertex> list_b;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue