1#ifndef DANDELION_RENDER_RENDER_ENGINE_H
2#define DANDELION_RENDER_RENDER_ENGINE_H
9#include <Eigen/Geometry>
10#include <spdlog/spdlog.h>
81class RasterizerRenderer
84 RasterizerRenderer(
RenderEngine& engine,
int num_vertex_threads,
int num_rasterizer_threads,
85 int num_fragment_threads);
95 int n_rasterizer_threads;
96 int n_fragment_threads;
107 std::vector<unsigned char>& rendering_res;
110 std::shared_ptr<spdlog::logger> logger;
131 std::vector<unsigned char>& rendering_res;
143 float fresnel(
const Eigen::Vector3f& I,
const Eigen::Vector3f& N,
const float& ior);
144 std::optional<std::tuple<Intersection, GL::Material>> trace(
const Ray& ray,
const Scene& scene);
154 std::shared_ptr<spdlog::logger> logger;
负责执行片元着色器的工作线程。
定义 rasterizer_renderer.h:47
实现光栅化渲染管线。
定义 render_engine.h:82
float & width
定义 render_engine.h:92
void render(const Scene &scene)
定义 rasterizer_renderer.cpp:68
离线渲染的执行入口
定义 render_engine.h:45
int n_threads
定义 render_engine.h:54
static Eigen::Vector3f background_color
定义 render_engine.h:68
std::unique_ptr< WhittedRenderer > whitted_render
定义 render_engine.h:73
std::vector< unsigned char > rendering_res
定义 render_engine.h:50
void render(Scene &scene, RendererType type)
离线渲染入口,负责调用渲染器的渲染函数
定义 render_engine.cpp:16
float width
定义 render_engine.h:52
std::unique_ptr< RasterizerRenderer > rasterizer_render
定义 render_engine.h:71
表示一个包含相机、光源、物体的完整场景。
定义 scene.h:46
负责执行顶点着色器的工作线程。
定义 rasterizer_renderer.h:30
实现 Whitted-Style 光线追踪管线。
定义 render_engine.h:119
Eigen::Vector3f cast_ray(const Ray &ray, const Scene &scene, int depth)
追踪指定光线得到颜色
定义 whitted_renderer.cpp:158
void render(Scene &scene)
定义 whitted_renderer.cpp:63
bool use_bvh
定义 render_engine.h:130
float fresnel(const Eigen::Vector3f &I, const Eigen::Vector3f &N, const float &ior)
菲涅尔方程根据观察角度计算反射光线的所占百分比
定义 whitted_renderer.cpp:102
static constexpr float mirror_threshold
定义 render_engine.h:125
RendererType
可用的渲染器类型
定义 render_engine.h:33