Kongouuu's Blog

慢慢学图形

【RTR4笔记】 第十八章 管线优化

定位管线瓶颈以及优化

18.1 Profiling and Debugging Tools 在我们试图去优化我们的程序的时候,Profiling 和 Debugging 一定是不能少的。这些包括: 截帧来查看资源状态 分析 CPU 与 GPU 之间交互的开销 调试着色器,可以的话曝露一些变量在运行时查看修改结果 使用编辑器的断点 当我们要查看 GPU 方面的开销的时候,则可以选择像 Re...

渲染引擎开发笔记小总结

代码框架

前言 这是我人生第一个尝试去开发渲染引擎的经历,说实话从架构上来看开发的问题特别特别的多。之前开发时不成熟的想法记录在这里。因为四月份的时候得去4v的义务军训耽误的四个月,不过也因此有了些时间去沉思问题到底出现在哪里。 讲白了现在的成果就是烂在骨子里,后期补救不回来,只能找时间重构。 这一篇单纯的总结一下我做了什么,哪里好哪里坏,重构怎么重构。 成果 先说结果,开发出来的东西还是...

【RTR4笔记】 第十五章 非真实感渲染

卡通渲染,描边

前言 这一章是一个非常简短的章节为整个非真实感渲染进行了介绍。简单的介绍了一下什么是卡通渲染,怎么进行描边,以及一些其他的特殊效果。并不会特别的去深入特定的某种渲染的实操,跟以往一样是进行大略的介绍。不过说白了 NPR 这里每个厂家都会有根据自己美术风格需要去进行独特的调整,所以也不会像前面的章节那样提供较为详细的思路。 15.1 Toon Shading 一般提到非真实感渲染 (NP...

【RTR4笔记】 第十一章 全局光照(下)

漫反射全局光照、高光全局光照

11.5 Diffuse Global Illumination 上一部分讲的是进行全局光照的一部分(遮蔽)的模拟,这一章则会开始讲如何去模拟一个全局的光线弹射的效果。 11.5.1 Surface Prelighting 我们在开篇的时候有提到一种叫 Radiosity 的手法,就是把所有的物体切割成不同的面当作间接光源。不过这个办法一般来说我们只能拿来做离线渲染,因为实时的去解算整...

【RTR4笔记】 第十一章 全局光照(上)

基础全局光照,Ambient Occlusion, Direction Occlusion

11.1 Rendering Equation \[L_o(p,v)=\int_{l \in \Omega}f(l,v)L_i(p,l)(n \cdot l)dl\] 在前面的部分中我们经常用到上面的渲染方程去处理我们的光照。而这个实际的意义就是去计算 物体表面接受到光后,会传输多少光给眼睛 这个值。不过前面直接光照或者环境光照的模型本质上都没有考虑到场景中的其他的物体对光源接收的影响。...

【软光栅开发笔记】(二) 渲染管线

软光栅管线设计

前言 上一章中已经把渲染管线外的框架搭好了,也就是我们的 应用程序侧 的大致情况。这一章开始搭建渲染管线的基础! 1 渲染管线回顾 回顾一下在 RTR4 中提到的 GPU渲染管线 ,大致上是分为下面的部分: 如果不考虑虚线的两个阶段,那么整体做起来实际上也不会太难。不过比起常规的 图形 API ,这里除了常规的 Shader 以外, 无论是裁剪还是屏幕映射都要全部由自己的程式去实...

【软光栅开发笔记】(一) 基础绘制

用SDL2窗口输出渲染结果

前言 为了巩固对渲染管线以及软光栅的思路,准备自己手写一个 CPU 的软光栅。功能要求不是很多,主要能熟悉一下渲染管线就可以了。不过在实际进去渲染管线前,要研究一下怎么去像 GPU 一样绘制画面,并且显示到我们的屏幕上。 这里绘制的方式主要参考的是 TinyRenderer,不过比起绘制到一个离线的图片中,我更希望像普通的图形 API 一样能够动态的显示在一个窗口内。为了达到这样的绘制效...

【RTR4笔记】 第十章 局部光照

环境光照,Spherical Harmonics

10.2 Environment Lighting 在前面的章节中有提到一个简单的单光源的光照模型。但在现实中我们还需要考虑到环境反射的光对我们物体的影响。不过环境光照这里本身主要还是讨论的一个局部光照的情况,也就是说我们所谓的 环境 并不是场景中渲染的其他物体,那会在全局光照中讲到。环境光照环节的环境光主要是来自于渲染的物体们之外的 背景。 一个非常简单的环境光的模型就是Ambient...

【图形实战】 DX12的VSSM阴影实现

用自己的渲染玩具做软阴影

前言 做到这里的时候自己的引擎也新增了很多包装以及功能的迭代。可以在运行时去切换不同的阴影效果或者关闭阴影,来做更实时的效果对比。 VSSM (Variance Soft Shadow Mapping) 是在 Games202 里看到的一种用近似去加速生成软阴影的手段,主要是用于解决我们进行常规软阴影渲染时一个过多采样的问题。 因为课的作业也是最多写到 PCSS 所以这里也是实际碰一碰 ...

【RTR4笔记】 第九章 基于物理的着色

PBR, BRDF

Physically Based Shading 9.3 BRDF 我们在根据物理去进行着色的时候,考虑到的是每个像素点所接受到的光,也就是: \[L_i(c,-v)\\ c:摄像机位置\\ v:通过像素的射线方向\] 这时候我们也做了一个假设,那就是空气本身是完全干净的。那么我们所得到的入射光的值,将是物体朝着我们射线方向的出射光的强度: \[L_i(c,-v) = L_o(p,...