top of page
DX11 PBR渲染器
![](https://static.wixstatic.com/media/bd49bc_6948f5a8af3642809cec1b0f9b46f31af000.jpg/v1/fill/w_866,h_487,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_6948f5a8af3642809cec1b0f9b46f31af000.jpg)
项目总览
基于图像的照明
对于基于图像的照明(IBL),我使用了split sum approximation,第一部分是预过滤的环境图,其中我根据不同的粗糙度值预先计算了 HDR 图像的卷积。对于第二部分,即镜面积分的 BRDF 部分,我使用了预先计算的LUT。水平纹理坐标为 n⋅ωi,垂直纹理坐标为粗糙度值。
![image.png](https://static.wixstatic.com/media/bd49bc_f5c0d77f172a495eae00e6dac600432a~mv2.png/v1/fill/w_600,h_88,al_c,q_85,enc_avif,quality_auto/bd49bc_f5c0d77f172a495eae00e6dac600432a~mv2.png)
![](https://static.wixstatic.com/media/bd49bc_b75bc8beef274230a67dd0f979dafe36f000.jpg/v1/fill/w_553,h_311,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_b75bc8beef274230a67dd0f979dafe36f000.jpg)
具有不同Texure的 IBL
IBL 的 HLSL 代码
Physically-Based Rendering
每个 PBR 对象都需要 5 个Texture:Albedo, Normal, Metallic, Roughness, Ambient Occlusion。对于每个Texture,我使用不同的Slot来存储所有纹理。如果某些对象缺少某些Texture,我会将纯白色纹理 RGBA(255、255、255、255)传递给着色器,以防最终结果太暗
![pbr1.png](https://static.wixstatic.com/media/bd49bc_733e70067611476a92522130bbd040db~mv2.png/v1/fill/w_600,h_330,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/pbr1.png)
PBR 管线中的Texture List
Slots 中绑定不同Texure的代码
在 BRDF 的镜面部分,D 使用Trowbridge-Reitz GGX,F 使用 Fresnel-Schlick 近似,G 使用 Smith's Schlick-GGX。
![pbr.png](https://static.wixstatic.com/media/bd49bc_08690061e81349f3a5cb45cf69939cfa~mv2.png/v1/fill/w_523,h_260,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/pbr.png)
不同粗糙度和金属度的 PBR
PBR 的 HLSL 代码
创建具有不同粗糙度和金属度的物体代码
着色模型
![](https://static.wixstatic.com/media/bd49bc_a691a43cec2c4d099ecc2fc56f408242f000.jpg/v1/fill/w_518,h_311,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_a691a43cec2c4d099ecc2fc56f408242f000.jpg)
一些着色模型(Cell Shading、BackLight、OrenNayar 等)
其他着色模型的 HLSL 代码
截图
![](https://static.wixstatic.com/media/bd49bc_df0073a387c7492c8e233e60f6bdc2ac~mv2.png/v1/fill/w_980,h_485,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_df0073a387c7492c8e233e60f6bdc2ac~mv2.png)
![](https://static.wixstatic.com/media/bd49bc_7eebccba17d445b7a41eb68780a4a145~mv2.png/v1/fill/w_980,h_488,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_7eebccba17d445b7a41eb68780a4a145~mv2.png)
![](https://static.wixstatic.com/media/bd49bc_b58d847185cd45d899e44059f2e6d567~mv2.png/v1/fill/w_980,h_488,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_b58d847185cd45d899e44059f2e6d567~mv2.png)
![](https://static.wixstatic.com/media/bd49bc_df0073a387c7492c8e233e60f6bdc2ac~mv2.png/v1/fill/w_980,h_485,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/bd49bc_df0073a387c7492c8e233e60f6bdc2ac~mv2.png)
1/4
bottom of page