
UnityShader
这瓜不包熟
这个作者很懒,什么都没留下…
展开
-
Unity Shader入门精要-渲染优化技术
造成性能瓶颈的原因主要以下几个方面:(1)CPU过多的DrawCall复杂的脚本逻辑或者物理模拟(2)GPU顶点处理:过多的顶点、过多的逐顶点计算片元处理:过多的片元(过高的分辨率,或者由于OverDraw造成)、过多的逐片元处理(3)带宽使用了尺寸很大且未压缩的纹理分辨率过高的帧缓存解决以上问题的途径:(1)针对 减少DrawCall处理:i:动态批处理-每一帧把可以进行批处理的模型网格(使用同一个材质)进行合并,再把合并后的模型数据传递给GPU。优原创 2021-07-05 21:08:09 · 180 阅读 · 1 评论 -
标准光照模型
标准的光照模型只关心直接光照(direct light)将光照部分分为四个:自发光、高光反射、漫反射、环境光一、环境光 Cambient = Gambient二、自发光 Cemissive = Memissive三、漫反射 漫反射是完全随机的,因此视角的方向不是重要的,但是入射光线的角度很重要。 定律:兰伯特定律(Lambert's Law) Cdiffuse = (Clight * Mdiffuse)max(0...原创 2021-07-05 16:27:38 · 341 阅读 · 0 评论 -
Unity的阴影
在实时渲染中,采用ShadowMap来进行阴影的渲染在前向渲染中,如果平行光开启了阴影,Unity就会为光源计算它的阴影映射纹理(shadowmap),ShadowMap本质上也是一张深度图(以光源为相机原点)因为在BasePass(一个平行光的逐像素光照计算 + 全部的顶点级光照计算+全部的SH光照计算) + AdditionalPass(可多次调用的其他光源的逐像素光照)中往往涉及很多复杂的光照模型计算,而我们需要的仅仅是深度信息因此在UnityShader中使用一个额外的Pass来专门更新原创 2021-04-22 14:22:50 · 571 阅读 · 0 评论 -
什么是游戏内全局光照
什么是全局光照: 全局光照,指的就是模拟光线是如何在场景中进行传播的,不仅会考虑那些直接光照的效果,还会计算光线被不同的物体表面反射而产生的间接光照。 Unity使用实时+预计算的方式来模拟场景中的光照:其中实时光照用于那些直接光照对场景的影响,物体移动式光照也会随之发生变化;因为实时光照无法模拟光线被多次反射(间接光照)的效果,因此采用预计算来模拟反射等间接光照。 其中预计算包括常见的光照烘焙:将光源对场景中的静态物体的光照效果提前烘焙到一张光照纹理当中,然后把这...原创 2021-04-15 14:27:41 · 1677 阅读 · 0 评论 -
UnityShader-13.3全局雾效
基本Shader制作雾效 1.在Shader中添加 #pragma multi_compile_fog 以及 内置宏 UNITY_FOG_COORDS、UNITY_TRANSFER_FOG、UNITY_APPLY_FOG实现,可移植性不高,需要在场景中所有物体添加相关渲染代码基于屏幕后处理制作雾效 1.方法1:在FragShader中,获取采样 SAMPLE_DEPTH_TEXTURE纹理(_CameraDepthTexture由Unity传递给我们的深度纹理)的深度值dep...原创 2021-04-14 20:38:13 · 344 阅读 · 0 评论