Unity Shader基础【四】- 第一个Unity Shader程序(基础光照及纹理)

本文介绍了Unity Shader的基础概念,包括着色、逐顶点光照与逐像素光照。详细讲解了环境光、漫反射、高光反射的光照模型,并探讨了纹理映射的基本原理和应用,如基本纹理、高度纹理与法线纹理、渐变纹理与遮罩纹理。通过学习,读者可以掌握如何编写第一个Unity Shader程序。
摘要由CSDN通过智能技术生成

1 基本概念


  • 着色:根据材质属性、光源信息,通过光照模型(Lighting Model)去计算沿某个观察方向的出射度的过程。

  • 逐顶点光照与逐像素光照:逐顶点光照在每个顶点上计算光照,再在渲染图元内部进行线性插值输出像素着色(Gouraud shading);逐像素光照以每个像素为基础进行光照计算(Phong shading);由于顶点数量远小于像素数量(光栅化为进行像素填充),因此逐顶点光照的计算复杂度往往小于逐像素光照,而逐顶点光照依赖于线性插值得像素光照,因此当有非线性计算时,逐顶点光照便会有问题,如出现锯齿。 对应在Shader编程中,逐顶点光照就在顶点着色器(vertex)中实现相应光照函数,逐像素光照就在片元着色器(fragment)中进行。

  • 纹理映射:将一张图映射到模型表面,通过**纹理映射坐标(UV坐标)**记录顶点在纹理中对应的2D坐标位置,通过(u,v)来表示,u表示横坐标,v表示纵坐标。Unity的纹理空间符合OpenGL传统,原点位于纹理左下角。

##2 光照模型


标准光照模型只关心直接光照,也就是直接从光源发射出来照射到物体表面后,经过物体表面一次反射直接进入摄像机的光线,包含是个部分:自发光(Emissive)、高光反射(Specular)、漫反射(Diffuse)、环境光(Ambient)。

  • 环境光:标准光照模型中用环境光用于模拟间接光照(经过不只一个物体反射);
  • 自发光:不需要经过任何物体反射进入摄像机;
  • 漫反射:对物体表面随机散射到各个方向的辐射度进行建模,符合半伯特定律(Lambert’s law),反射光线强度与表面法线和淘汰方向之间的夹角的余弦值成正比。
  • 高光反射:当光线从光源照射到模型表面时,该表面在完全镜表反射方向散射出多少辐射量。

标准光照模型的公式为:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ Color = Emissi…

2.1 环境光模型

环境光模型公式如下:

Ambient =Aintensity * AColor * Amaterial
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值