GAMES202-作业3
GAMES202 HW3的完成记录~
总览
在延迟渲染管线下,为一个光源为方向光,材质为漫反射 (Diffuse) 的场景实现屏幕空间下的全局光照效果(两次反射)。
作业3共分为三个部分: 1. 实现对场景直接光照的着色 (考虑阴影)。 2. 实现屏幕空间下光线的求交 (SSR)。 3. 实现对场景间接光照的着色。
作业文档里使用的术语是BSDF,不过既然本次作业只会涉及到漫反射材质,下文可能会出现BSDF和BRDF的互换。
Part 1:直接光照
这部分的两个子任务是计算漫反射材质BSDF的值以及光照的强度(包含可见性),非常简单。
首先是EvalDiffuse函数的实现。虽然EvalDiffuse接收了三个参数\(w_i, w_o\)和\(uv\),但是对于漫反射材质来说,前两个代表方向的参数都是不需要的。作业说明中提示要用到保存在G-Buffer中的法线信息,意味着计算出来的BSDF是cosine weighted的。知道了这些之后,实现EvalDiffuse就是随手的事啦:
1 | vec3 EvalDiffuse(vec3 wi, vec3 wo, vec2 uv) { |
