mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-14 15:00:30 +02:00
Measured with gpu/probe exp43-47, bit exact: - New vertices are interpolated from the inside vertex, t = d_in / (d_in - d_out) with d = z + w through the GE adder, using the GE's reciprocal; out - in is truncated to float24 before the multiply by t, and t and each coordinate use float24 products and adds. - With one vertex outside, the quad is split from the vertex before it in the GE's order: (p, a, b) and (p, b, n). The GE takes odd strip triangles in reverse and fan triangles in order, so SendTriangle now says when the vertices it gets are reversed from that. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
35 lines
1.3 KiB
C++
35 lines
1.3 KiB
C++
// Copyright (c) 2013- PPSSPP Project.
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 2.0 or later versions.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License 2.0 for more details.
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
// Official git repository and contact information can be found at
|
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
|
|
|
#pragma once
|
|
|
|
#include "TransformUnit.h"
|
|
|
|
struct PixelFuncID;
|
|
struct SamplerID;
|
|
|
|
class BinManager;
|
|
|
|
namespace Clipper {
|
|
|
|
void ProcessPoint(const ClipVertexData &v0, BinManager &binner);
|
|
void ProcessLine(const ClipVertexData &v0, const ClipVertexData &v1, BinManager &binner);
|
|
void ProcessTriangle(const ClipVertexData &v0, const ClipVertexData &v1, const ClipVertexData &v2, const ClipVertexData &provoking, BinManager &binner, bool reversed = false);
|
|
void ProcessRect(const ClipVertexData &v0, const ClipVertexData &v1, BinManager &binner);
|
|
|
|
} // namespace
|