学习教程来自:GAMES202-高质量实时渲染
是一系列在CPU端调用的API用来调用GPU工作。
渲染过程类比:
描述着色器如何着色的语言:着色器语言经过编译变为在GPU上执行的汇编语言
一些变量的声明
工具:Nsight Graphics、RenderDoc
方法:打印颜色
正确的用来描述光线传播的公式
PBR:
L o ( p , ω o ) = L e ( p , ω o ) + ∫ H 2 f r ( p , ω i → ω o ) L i ( p , ω i ) cos θ i d w i L_o(p, \omega_o) = L_e(p, \omega_o) + \int_{H^2}^{}f_r(p, \omega_i \to \omega_o) L_i(p, \omega_i) \cos \theta_i dw_i Lo(p,ωo)=Le(p,ωo)+∫H2fr(p,ωi→ωo)Li(p,ωi)cosθidwi
In Real Time Rendering:对入射光源是否被遮挡(V)单独描述
L o ( p , ω o ) = ∫ Ω + L i ( p , ω i ) f r ( p , ω i , ω o ) cos θ i V ( p , ω i ) d w i L_o(p, \omega_o) = \int_{\Omega^+}^{}L_i(p, \omega_i) f_r(p, \omega_i, \omega_o) \cos \theta_i V(p, \omega_i) dw_i Lo(p,ωo)=∫Ω+Li(p,ωi)fr(p,ωi,ωo)cosθiV(p,ωi)dwi
作业0:在框架里实现Bulin-Phong,所有代码已给出
碰到的问题:
没有渲染出来是因为uViewMatrix和uViewMatrix这2个矩阵没有传过来,需要
如果没有对vFragPos进行世界空间的转换而仅仅将aVertexPosition传入,那么原本(52,52,52)的缩放就没有起作用,导致光线的衰减是基于(1,1,1)缩放后的世界空间位置计算的
最终效果