dl
dl_light.h
浏览该文件的文档.
1
12#pragma once
13
14#include "dl_type.h"
15#include "math/dl_math.h"
16#include "math/dl_matrix.h"
17
18namespace dl
19{
22{
23 friend class VK;
24public:
25 void Render();
30 void RenderDebug(const Position3& pos);
31
35 void SetStrength(const Position3& s)
36 {
37 _s = s;
38 }
39
43 void SetDirection(const Position3& d)
44 {
45 _d = d;
47 }
49 _s{ 1.0f, 1.0f, 1.0f },
50 _d{ -AXIS_X } // 照向物体正面
51 {
52 }
53private:
54 Position3 _s; //强度
55 Position3 _d; //方向
56};
57
60{
61 friend class VK;
62public:
63 void Render();
64
68 void SetStrength(const Position3& s)
69 {
70 _s = s;
71 }
72
76 void SetPosition(const Position3& p)
77 {
78 _p = p;
79 }
80
84 void SetFalloff(const Position2& falloff)
85 {
86 _falloffStart = (float)falloff[0];
87 _falloffEnd = (float)falloff[1];
88 }
90 _s{ 1.0f, 1.0f, 1.0f },
91 _falloffStart{ 1.0f },
92 _p{0.5f, 0.0f, 2.0f},
93 _falloffEnd{ 1.0f }
94 {
95 }
96private:
97 Position3 _s; //强度
98 float _falloffStart;//衰减起始
99 Position3 _p; //位置
100 float _falloffEnd; //衰减结束
101};
102
105{
106 friend class VK;
107public:
108 void Render();
109
113 void SetStrength(const Position3& s)
114 {
115 _s = s;
116 }
117
121 void SetPosition(const Position3& p)
122 {
123 _p = p;
124 }
125
129 void SetDirection(const Position3& d)
130 {
131 _d = d;
132 Math::Normalize(_d);
133 }
134
138 void SetFalloff(const Position2& falloff)
139 {
140 _falloffStart = (float)falloff[0];
141 _falloffEnd = (float)falloff[1];
142 }
143
147 void SetPower(float power)
148 {
149 _power = (float)power;
150 }
152 _s{ 1.0f, 1.0f, 1.0f },
153 _falloffStart{ 10.0f },
154 _d{ -AXIS_X },
155 _falloffEnd{ 10.0f },
156 _p{ 2.0f, 0.0f, 0.0f },
157 _power{ 10.0f }
158 {
159 }
160private:
161 Position3 _s; //强度
162 float _falloffStart; //衰减起始
163 Position3 _d; //方向
164 float _falloffEnd; //衰减结束
165 Position3 _p; //位置
166 float _power; //强度
167};
168}
void SetStrength(const Position3 &s)
设置强度
friend class VK
void RenderDebug(const Position3 &pos)
调试绘图
void SetDirection(const Position3 &d)
设置方向
void SetPosition(const Position3 &p)
设置位置
void SetStrength(const Position3 &s)
设置强度
friend class VK
void SetFalloff(const Position2 &falloff)
设置衰减范围
void SetPosition(const Position3 &p)
设置位置
void SetStrength(const Position3 &s)
设置强度
friend class VK
void SetPower(float power)
设置聚光灯强度
void SetFalloff(const Position2 &falloff)
设置衰减范围
void SetDirection(const Position3 &d)
设置方向
数学相关的通用算法
矩阵(列存储)
通用类型
void Normalize(Array< T, N > &v)
向量单位化
constexpr Position3 AXIS_X
Array< Float, 2 > Position2
Array< Float, 3 > Position3