Unity 渲染原理(十四)Unity的光源
只有一个平行光的世界很美好,但是,我们实际上就是需要在Unity Shader中处理更复杂的光源类型以及数目更多的光源。
只有一个平行光的世界很美好,但是,我们实际上就是需要在Unity Shader中处理更复杂的光源类型以及数目更多的光源。
之前的光照模型中,我们都只有一个光源,而且是平行光。但是实际开发过程中,我们往往需要处理数目更多,类型更为复杂的光源,重要的是,我们需要得到阴影。现在我们就要学习一下如何处理这些更为复杂的光照。
最近在写打包流水线的时候,遇到了几个坑,稍微总结一下。
这个周在引入新的插件进入项目后,本地调试是正常的,但是一大包出来就会丢失一些文件,查了半天,发现是因为该文件没有被直接引用,是通过ScriptableObject.CreateInstance(typeName)
这种形式动态创建的,所以最后打包之后被代码裁剪的过程去掉了。
解决方案也比较简单,在Assets目录下加一个link.xml,然后声明该程序集不可被裁减就好。
但是回过头来,我们还是要看一下,这个代码裁剪的逻辑以及为什么link.xml可以避免代码被裁减。
透明是游戏中经常使用的一种场景,在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道。当开启透明混合后,当一个物体被渲染到屏幕上,每个片元除了颜色值和深度值之外,它还有另一个属性,透明度。当透明度为1时,表示该像素完全不透明,当为0时,表示该像素完全不会显示。
在Unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试(Alpha Test),这种方法其实无法得到真正的半透明效果;另一种是透明度混合(Alpha Blending)。
总的来说,高等数据的核心知识点都在围绕着极限和连续展开,所以熟练掌握求极限的方法很重要。
之所以突然起了这篇文章,是因为这周工作中,使用单例模式实现了一个功能,,在code review的时候,被指出尽量不要使用单例模式,给了我几篇文章看,收获了一些内容,所以系统地总结下。
继续上一篇博客,继续讨论下基础纹理,这次我们讨论下渐变纹理和遮罩纹理
近期刚把操作系统整本书看了一遍,趁着有个总体印象,先梳理一下知识点
纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素(为了和像素区分)的控制模型颜色。
美术人员在建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标。通常,这些坐标使用一个二维变量(u,v)来表示,其中u是横坐标,v是纵坐标,所以纹理坐标也称为uv坐标。