一些对辐射度量学的理解

随着硬件性能的提升,PBS/PBR已经越来越成为一种趋势。 Unity内置的standard shader都已经默认使用PBR算法。 而学习PBR过程中,有一门必提的知识是“辐射度量学”。 本来我以为我都学会了,毕竟path tracer都写出来了,并且效果看起来很正常。 但是最近在学习全局光照时,突然对“辐射度量学”突然产生了两个疑惑。 光线在传播过程中,Radiance是如何体现出,能量随着距离增加而衰减的? 回忆在写path tracing时,代码并没有刻意去计算距离对光线能量的衰减。 而从数学公式上看,在计……

深度缓冲和半透明渲染

在场景渲染方式上,一般分为“不透明渲染”和“半透明渲染”。 “不透明渲染”意思是,如果A物体被B物体挡住,那么A物体将完全不可见。 至少有两种方式达到这种效果(假设相机的朝向为Z轴正方向): 由于屏幕上每一个相素都是由场景中某一世界坐标(Fragment)投影得到,在绘制时以Fragment在相机空间内按Z轴从大到小进行绘制, 写入颜色值时直接覆盖FrameBuffer中的颜色值。 物体以任意顺序渲染,但是在渲染某一个Fragment时,会将其在相机空间的Z坐标写入一个叫做深度缓冲区的地方,在……