5.10 recombinant shaders--game programming gems 笔记

本文探讨了游戏渲染中ShaderLinker的重要作用及其实现方法。通过定义不同的渲染技术和材质属性,如像素光照、顶点光照、全局光照模型、法线映射等,将这些特性映射到vertexshader和pixelshader上。利用shader与材质类型的映射,通过组合小函数来形成完整的shader,从而实现了高度灵活且通用的游戏渲染管线。

这个可以说是一个游戏渲染部分非常核心的部分。

game programming gems 5开这个专题是非常有意义的。

shaderlinker反映了整个引擎的data pipeline的结构:

所支持渲染的宽度,深度和灵活性。

具体做法是首先定义所支持的渲染方式,这些当然是反映到物体的属性和材质上:

lighting--per-pixel, per-vertex, 全局光模型,normal/parallax map等

texture: 各种mask,animated,

这一切都最后反映到vertex shader和pixel shader上。

根据所支持的渲染技术,写出对应的各个部分,比如parallax map的实现,光照模型,都放在一个个小函数里面,然后在根据现在游戏中有的类型进行组合,进而形成一个个完整的shader。

把shader和材质类型map起来。

map肯定就是有hash的key和value,一般也就是把uint32或者uint64中的每个bit与具体材质信息对应起来,那么转成字符串就成了shader的名字。

这样就完成了map过程。

由于这种做法带来了巨大的通用性,相应的,它对于设计和后期的调试打磨就有更高的要求。

这个方法的确非常cool!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值