Unity Shader阴影
demi 在 周二, 05/07/2019 - 17:31 提交
表面遮挡住光源路径就会产生阴影,由理想点光源产生的阴影边缘是比较锐利的,而现实世界中的阴影边缘确是模糊的,该模糊部分成为半影。半影的出现,是由于现实世界的点光源不是空间意义上的一个点,它会覆盖一定的面积,就会产生以不同角度掠过物体边缘的光线。
表面遮挡住光源路径就会产生阴影,由理想点光源产生的阴影边缘是比较锐利的,而现实世界中的阴影边缘确是模糊的,该模糊部分成为半影。半影的出现,是由于现实世界的点光源不是空间意义上的一个点,它会覆盖一定的面积,就会产生以不同角度掠过物体边缘的光线。
在unity中主要有两种透明效果的实现,透明度测试和透明度混合,透明度测试比较简单暴力,就是对片元的alpha通道的值进行测试,满足条件就留下该片元,不满足就抛弃该片元,所以在本章中主要讨论第二种---透明度混合。
在没有开启双面渲染的时候,我们常常无法观察到物体内部及背面的形状,这是因为另外一面并没有被渲染而是被默认剔除了。 所以我们需要用到一个新的指令Cull来设置......
在Unity中,可以使用两种办法来获得透明效果: 1. 使用透明度测试(Alpha Test),但其实得到的并不是真正的半透明效果;2. 使用透明度混合(Alpha Blending),得到的效果是比较真实的。
在C++领域,必看的书是《Effective C++》。而《Effective C#》之于C# ,是类似《Effective C++》之于C++一样的存在。这篇文章,将《Effective C# Second Edition》一书中适用于Unity游戏引擎里使用C#的经验之谈进行了提炼,总结成为22条准则,供各位快速地掌握这本书的知识梗概,在Unity中写出更高质量的C#代码。
在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。
常用的几个内置文件通常都被封装在cginc文件中,通过文件的包含来实现对文件中函数及变量的引用,大家可以到unity的安装目录下找到对应的文件,当然我们也可以写一些自己的cginc文件放置到该目录中,方便自己使用。
CPU在游戏中的主要分工,主要分为两个部分:设置渲染状态和调用DC。 其中设置渲染状态属于比较重要的分工,对于加载到游戏中的资源和对象等,CPU需要计算其顶点相关的矩阵,渲染所用的贴图,渲染所用到的材质和shader,渲染所用到的灯光等。
对于不在摄像机拍摄范围内的对象,对这一对象的绘制是完全没有必要的,所以可以用到遮挡剔除技术:将静态物体勾选static;选择Windows->Occlusion Culling打开遮挡剔除窗口,单机Bake;修改bake界面的参数大小,可以修改Bake的单元的大小......
在Unity的延迟渲染中,每个光源都可以按照逐像素的方式进行处理,但也有缺点:①不支持真正的抗锯齿功能;②不能处理半透明物体;③对显卡有一定要求。