1#ifndef DANDELION_RENDER_RASTERIZER_H
2#define DANDELION_RENDER_RASTERIZER_H
12#include <Eigen/Geometry>
13#include <spdlog/spdlog.h>
28float sign(Eigen::Vector2f p1, Eigen::Vector2f p2, Eigen::Vector2f p3);
58 static bool inside_triangle(
int x,
int y,
const Eigen::Vector4f* vertices);
60 static std::tuple<float, float, float>
74 float alpha,
float beta,
float gamma,
const Eigen::Vector3f& vert1,
75 const Eigen::Vector3f& vert2,
const Eigen::Vector3f& vert3,
const Eigen::Vector3f& weight,
void rasterize_triangle(Triangle &t)
将指定三角形光栅化为片元。
定义 rasterizer.cpp:122
static bool inside_triangle(int x, int y, const Eigen::Vector4f *vertices)
定义 rasterizer.cpp:69
static Eigen::Vector3f interpolate(float alpha, float beta, float gamma, const Eigen::Vector3f &vert1, const Eigen::Vector3f &vert2, const Eigen::Vector3f &vert3, const Eigen::Vector3f &weight, const float &Z)
对顶点的任意属性(如world space坐标,法线向量)利用屏幕空间进行插值
定义 rasterizer.cpp:106
void worker_thread()
负责执行光栅化的工作线程
定义 rasterizer.cpp:24
static std::tuple< float, float, float > compute_barycentric_2d(float x, float y, const Eigen::Vector4f *v)
定义 rasterizer.cpp:85
表示一个三角形,包括三个顶点的世界坐标,视口坐标以及每个顶点的法向向量
定义 triangle.h:18