【Shader基础篇】之基本概念

1:移动端IOS,Android等2D手游:都是使用漫反射贴图或者法线贴图,模型是白模,角色模型上是漫反射。贴图人物上的盔甲,并不是白模附带的,而是画上去的。而凹凸不平效果是法线贴图。使用的颜色空间是Gramma。


2:主机端:大型单机游戏,是真实模拟现实中的渲染效果。其中unity使用的标准着色器支持10种贴图类型。使用的颜色空间是Linear空间。unity默认选择Gamma,但如果使用PBR标准着色器,就必须将颜色空间改为Linear


3:PBR:基于物理规则的渲染方式。GI:模拟光的互动和反弹等复杂行为的算法。


4:Unity5中重点推出了一套基于物理着色(Physically Based Shading,PBS)的多功能Shader,叫做标准着色器(Standard Shader)。


5:Shader学习步骤:内置shader使用,3D数学基础,渲染管线的渲染步骤(DirectX),自己开发shader。


6:CG/HLSL提供的语义作用是让shader知道从哪里读取数据,并把数据输向哪里。


7: 点光源不与任何对象共享任何组件,当把点光源放到场景中的时候,其他对象将变暗。


8:材质相当于框架,shader相当于框架中的内容。


9:我们在subshader中书写材质的参数,里面有Tags,Pass块,我们主要是实现pass块。subahsder和properties属于同一级。正真用于渲染物体内容的代码是在subshader中实现的,subshader针对不同显卡编写不同shader,然后unity在运行的时候,会选择最适合显卡运行的那个subshader。


10:Cg 同时被OpenGL 与Direct3D 两种编程API 所支持。

11:Cg 语言通常采用动态编译的方式。在宿主程序运行时利用Cg 运行库( Cg46Runtime library)动态编译Cg 代码,使用动态编译的方式,可以将Cg 程序当作一个脚本,随时修改随时运行,节省大量的时间。Cg 语言同样支持静态编译方式,即,Cg 源码编译成汇编代码后,这部分目标代码被链接到宿主程序最后的可执行程序中。使用静态编译的好处是只要发布可执行文件即可,源码不会被公开。Cg 编译器首先将Cg 程序翻译成可被图形API(OpenGL 和Direct3D)所接受的形式,然后应用程序使用适当的OpenGL 和Direct3D 命令将翻译后的Cg 程序传递给图形处理器,OpenGL 和Direct3D 驱动程序最后把它翻译成图形处理器所需要的硬件可执行格式。NVIDIA 提供的Cg 编译器为cgc.exe。

12:被特定的图形硬件环境或AIP 所支持的Cg 语言子集,被称为Cg Profiles。需要注意的是: profile 分为顶点程序的profile 和片段程序的profile,这是因为顶点着色器和片段着色器原本就不是工作在同一个硬件。

13:unity中的shader是shaderlab。unity shader中cginc文件是包含文件,是unity为我们提供的一些有用的变量和帮助函数。

14:在unity的shaderlab所提供的结构中,我们既可以使用GLSL来写shader,也能用Cg/HLSL来写。

15:subshader中的每个快pass包含了渲染一个几何体的具体代码,程序猿也主要操作这一块。块的Name主要用来引用此pass,一次书写,重复使用。且命名要大写。

16:Surface Shader最终会被编译为一个复杂的vertex+fragment Shader。

17:标准shader使用的是PBR渲染,基于现实物理效果的渲染表现形式,模型在3dmax等三维制作软件中,要按照PBR贴图的制作规范和模式来制作,决定了该模型是否可以使用标准shader渲染。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章