我们将需要用到UV计算的数据,都写入到了G-Buffer中。 这里有一点要特别注意,在延迟渲染阶段,其实是一个屏幕后处理,片段Shader中是对全屏像素进行处理的,那么在计算光照效果时,是全屏幕每个像素都参与的。 这就带来了问题,环境光,它会对屏幕每个像素都计算一遍,给屏幕上每个像素都渲染成环境光的颜色。 但是为什么实际运行效果又没有出现这个问题呢? 这个关键就在 ,在渲染到G-Buffer阶段,只有实际有顶点数据存在的片段,才会被渲染到 ,空白区域 是(0,0,0),不管是环境光还是方向光、点光源的计算都是要乘以 ,那么空白区域就都是(0,0,0)。 然后还有一个问题,glClearColor清屏颜色被写入到了G-Buffer的所有FBO中了,对G-Buffer中存储的几何数据造成了影响,...
我们将需要用到UV计算的数据,都写入到了G-Buffer中。 这里有一点要特别注意,在延迟渲染阶段,其实是一个屏幕后处理,片段Shader中是对全屏像素进行处理的,那么在计算光照效果时,是全屏幕每个像素都参与的。 这就带来了问题,环境光,它会对屏幕每个像素都计算一遍,给屏幕上每个像素都渲染成环境光的颜色。 但是为什么实际运行效果又没有出现这个问题呢? 这个关键就在 ,在渲染到G-Buffer阶段,只有实际有顶点数据存在的片段,才会被渲染到 ,空白区域 是(0,0,0),不管是环境光还是方向光、点光源的计算都是要乘以 ,那么空白区域就都是(0,0,0)。 然后还有一个问题,glClearColor清屏颜色被写入到了G-Buffer的所有FBO中了,对G-Buffer中存储的几何数据造成了影响,所以glClearColor只能用黑色来清屏了。