Skip to content

材质的光照模型

我们在之前已经介绍过材质模板和材质实例的概念,材质模板已经定义了材质使用的shader、参数个数与参数类型、材质光栅化所需要的基本设置,自定义的顶点或像素阶段的自定义shader等,也就是说材质模板已经决定了材质的表现方式。

在实时渲染的发展中,产生了大量的各种材质实现。其中一个重要的概念是光照模型(LightingModel),或者叫渲染方程(RenderingFunction),或者叫材质模型(MaterialModel)。它决定了材质拥有那些参数和属性,也就决定了当材质表面结合光照时的计算公式,那么也就决定了最终在屏幕上的表现。

本节介绍RoyEngine所采用的光照模型。分为以下几个部分:

理解好这些材质模型,是进行自定义材质开发的基础。Shader的编写并非是完全的自定义,而是有理论基础的。而理论是由世界上绝顶聪明的人对现实世界的公式化抽象,再由非常聪明的计算机工程师离散化形成能够被计算机执行的程序。所以这些模型就是对这些前人经验的深刻总结,我们必须理解好这些材质模型。

一些刚入门的人会觉得些会写shader特别厉害,其实shader只是一个GPU的指令集,就像汇编语言是CPU的指令集一样。而且shader又已经是高级语言形态(glsl、hlsl等)和C语言非常类似。所以一个会写C语言的人也不怎么厉害,重点是他用C语言表达什么。是表达自己想的那些似是而非的,自己觉得很牛X的效果,还是站在巨人的肩膀上做出在自己领域的迭代和改进,就变成这个人能否真正进入渲染大门的一个分界线。