Dandelion
1.1.1
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
*/
29
class
VertexProcessor
30
{
31
public
:
32
void
input_vertices(
const
Eigen::Vector4f& positions,
const
Eigen::Vector3f& normals);
33
VertexShaderPayload
(*vertex_shader_ptr)(
const
VertexShaderPayload
& payload);
34
void
worker_thread();
35
36
private
:
37
std::queue<VertexShaderPayload> vertex_queue;
38
std::mutex queue_mutex;
39
};
40
41
/*!
42
* \ingroup rendering
43
* \~chinese
44
* \brief 负责执行片元着色器的工作线程。
45
*/
46
class
FragmentProcessor
47
{
48
public
:
49
void
worker_thread();
50
51
Eigen::Vector3f (*fragment_shader_ptr)(
const
FragmentShaderPayload
& payload,
52
const
GL::Material
& material,
53
const
std::list<Light>& lights,
const
Camera
& camera);
54
55
private
:
56
};
57
58
#endif
// DANDELION_RENDER_RASTERIZER_RENDERER_H
camera.h
FragmentProcessor
负责执行片元着色器的工作线程。
定义
rasterizer_renderer.h:47
VertexProcessor
负责执行顶点着色器的工作线程。
定义
rasterizer_renderer.h:30
gl.hpp
graphics_interface.h
一些公用的渲染管线接口。
light.h
Camera
表示观察点的相机,既可以用于预览视角,也可以用于渲染视角。
定义
camera.h:22
FragmentShaderPayload
片元着色器的输入单位。
定义
graphics_interface.h:45
GL::Material
物体材质。
定义
gl.hpp:189
VertexShaderPayload
定义
graphics_interface.h:27
src
render
rasterizer_renderer.h
制作者
1.13.1