Dandelion 1.1.2
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
rasterizer_renderer.h
浏览该文件的文档.
1#ifndef DANDELION_RENDER_RASTERIZER_RENDERER_H
2#define DANDELION_RENDER_RASTERIZER_RENDERER_H
3
4#include <vector>
5#include <list>
6#include <queue>
7#include <array>
8
9#include <Eigen/Core>
10#include <Eigen/Geometry>
11
12#include "../platform/gl.hpp"
13#include "../scene/light.h"
14#include "../scene/camera.h"
15#include "graphics_interface.h"
16
17/*!
18 * \file render/rasterizer_renderer.h
19 * \ingroup rendering
20 * \~chinese
21 * \brief 光栅化渲染器中顶点处理、片元处理两个阶段的实现。
22 */
23
24/*!
25 * \ingroup rendering
26 * \~chinese
27 * \brief 负责执行顶点着色器的工作线程。
28 */
30{
31public:
32 /*!
33 * \~chinese
34 * \brief 输入顶点数据到顶点处理队列中
35 *
36 * \param positions 顶点位置坐标
37 * \param normals 顶点法线向量
38 */
39 void input_vertices(const Eigen::Vector4f& positions, const Eigen::Vector3f& normals);
40
41 /*!
42 * \~chinese
43 * \brief 顶点着色器函数指针,指向用于处理顶点数据的着色器函数
44 * \param payload 待着色的顶点数据
45 *
46 * \return 着色后的顶点数据
47 */
49
50 /*!
51 * \~chinese
52 * \brief 负责执行顶点着色器的工作线程
53 *
54 * 不断读取顶点队列中的顶点数据,执行顶点着色器,并将结果存储到顶点着色输出队列中
55 *
56 */
57 void worker_thread();
58
59private:
60 /*! \~chinese 存储待着色顶点数据的队列 */
61 std::queue<VertexShaderPayload> vertex_queue;
62 /*! \~chinese 保护顶点队列的互斥锁 */
63 std::mutex queue_mutex;
64};
65
66/*!
67 * \ingroup rendering
68 * \~chinese
69 * \brief 负责执行片元着色器的工作线程。
70 */
72{
73public:
74 /*!
75 * \~chinese
76 * \brief 负责执行片元着色器的工作线程
77 *
78 * 不断读取光栅化输出队列中的顶点数据,执行片元着色器,计算并设置像素颜色
79 *
80 */
81 void worker_thread();
82
83 /*!
84 * \~chinese
85 * \brief 片元着色器函数指针,指向用于计算片元颜色的着色器函数
86 * \param payload 片元数据
87 * \param material 材质属性
88 * \param lights 场景中的光源列表
89 * \param camera 场景相机
90 *
91 * \return 计算得到的片元RGB颜色
92 */
93 Eigen::Vector3f (*fragment_shader_ptr)(
94 const FragmentShaderPayload& payload, const GL::Material& material,
95 const std::list<Light>& lights, const Camera& camera
96 );
97
98private:
99};
100
101#endif // DANDELION_RENDER_RASTERIZER_RENDERER_H
包含相机的类,用来表示场景中的相机。
负责执行片元着色器的工作线程。
定义 rasterizer_renderer.h:72
void worker_thread()
负责执行片元着色器的工作线程
定义 rasterizer_renderer.cpp:201
Eigen::Vector3f(* fragment_shader_ptr)(const FragmentShaderPayload &payload, const GL::Material &material, const std::list< Light > &lights, const Camera &camera)
片元着色器函数指针,指向用于计算片元颜色的着色器函数
定义 rasterizer_renderer.h:93
负责执行顶点着色器的工作线程。
定义 rasterizer_renderer.h:30
void input_vertices(const Eigen::Vector4f &positions, const Eigen::Vector3f &normals)
输入顶点数据到顶点处理队列中
定义 rasterizer_renderer.cpp:156
std::mutex queue_mutex
定义 rasterizer_renderer.h:63
void worker_thread()
负责执行顶点着色器的工作线程
定义 rasterizer_renderer.cpp:167
std::queue< VertexShaderPayload > vertex_queue
定义 rasterizer_renderer.h:61
VertexShaderPayload(* vertex_shader_ptr)(const VertexShaderPayload &payload)
顶点着色器函数指针,指向用于处理顶点数据的着色器函数
定义 rasterizer_renderer.h:48
一些公用的渲染管线接口。
包含光源的类,目前只有一个点光源。
表示观察点的相机,既可以用于预览视角,也可以用于渲染视角。
定义 camera.h:24
片元着色器的输入单位。
定义 graphics_interface.h:45
物体材质。
定义 gl.hpp:227
顶点着色器的输入和输出单位。
定义 graphics_interface.h:27