1#ifndef DANDELION_RENDER_RENDER_ENGINE_H
2#define DANDELION_RENDER_RENDER_ENGINE_H
9#include <Eigen/Geometry>
10#include <spdlog/spdlog.h>
82class RasterizerRenderer
87 RenderEngine& engine,
int num_vertex_threads,
int num_rasterizer_threads,
88 int num_fragment_threads
97 int n_rasterizer_threads;
98 int n_fragment_threads;
109 std::vector<unsigned char>& rendering_res;
113 std::shared_ptr<spdlog::logger> logger;
135 std::vector<unsigned char>& rendering_res;
148 float fresnel(
const Eigen::Vector3f& I,
const Eigen::Vector3f& N,
const float& ior);
162 std::optional<std::tuple<Intersection, GL::Material>>
trace(
const Ray& ray,
const Scene& scene);
173 std::shared_ptr<spdlog::logger> logger;
负责执行片元着色器的工作线程。
定义 rasterizer_renderer.h:72
实现光栅化渲染管线。
定义 render_engine.h:83
void render(const Scene &scene)
定义 rasterizer_renderer.cpp:69
离线渲染的执行入口
定义 render_engine.h:45
int n_threads
定义 render_engine.h:55
static Eigen::Vector3f background_color
定义 render_engine.h:69
std::unique_ptr< WhittedRenderer > whitted_render
定义 render_engine.h:74
std::vector< unsigned char > rendering_res
定义 render_engine.h:51
void render(Scene &scene, RendererType type)
离线渲染入口,负责调用渲染器的渲染函数
定义 render_engine.cpp:16
float width
定义 render_engine.h:53
std::unique_ptr< RasterizerRenderer > rasterizer_render
定义 render_engine.h:72
表示一个包含相机、光源、物体等对象的完整场景。
定义 scene.h:49
负责执行顶点着色器的工作线程。
定义 rasterizer_renderer.h:30
实现 Whitted-Style 光线追踪管线。
定义 render_engine.h:122
Eigen::Vector3f cast_ray(const Ray &ray, const Scene &scene, int depth)
追踪指定光线得到颜色
定义 whitted_renderer.cpp:159
void render(Scene &scene)
定义 whitted_renderer.cpp:63
bool use_bvh
定义 render_engine.h:134
float fresnel(const Eigen::Vector3f &I, const Eigen::Vector3f &N, const float &ior)
菲涅尔方程根据观察角度计算反射光线的所占百分比
定义 whitted_renderer.cpp:103
static constexpr float mirror_threshold
定义 render_engine.h:129
std::optional< std::tuple< Intersection, GL::Material > > trace(const Ray &ray, const Scene &scene)
追踪光线与场景中物体的相交情况
定义 whitted_renderer.cpp:123
RendererType
可用的渲染器类型
定义 render_engine.h:33