随笔分类 - ShaderLab
摘要:Secondary Maps(Detail Maps) & Detail Mask 增加模型细节,而不需要使用单张的超大贴图。 应用:增加皮肤细节,比如毛孔;砖墙添加细小的裂缝和青苔;大型金属容器上增加一些小的划痕和擦痕。 toolbag.shader: //inherits "normalMap.
阅读全文
摘要:MarmosetInput.cginc: Input结构定义: struct Input { #if defined(MARMO_PACKED_UV) || defined(MARMO_PACKED_VERTEX_OCCLUSION) || defined(MARMO_PACKED_VERTEX_C
阅读全文
摘要:概述: IBL:image based lighting,一种间接光照(indirect lighting)技术,将周围的环境存在一张环境贴图(基于现实世界或3D场景生成)里面,然后将环境贴图上的每一个像素都当做一个光源发射器。这样我们能有效地捕捉环境的全局光照环境和大体感觉,让渲染物体有一种沉浸在
阅读全文
摘要:光源辐射率: 辐射率(radiance)表示光源在给定立体角ω下的辐射通量(或光源发射的能量)。 那么假设立体角ω无限小时,辐射率就表示单束光线(或说某个单一方向)的辐射通量。 点光源:point light,在所有方向都有相同的亮度,辐射强度(radiant intensity)等于其发射出来的所
阅读全文
摘要:判断一种PBR光照模型是否是基于物理的,必须满足以下三个条件: (1)基于微平面(Microfacet)的表面模型。Be based on the microfacet surface model. (2)能量守恒。Be energy conserving. (3)应用基于物理的BRDF。Use a
阅读全文
摘要:Albedo:非金属表示颜色贴图,金属表示基础反射率(base reflectivity)。跟diffuse贴图的区别是,albedo贴图不应该包含局部阴影信息(交给AO贴图),而只包含纯颜色信息(或折射吸收系数)。 Normal:普通法线贴图。 Metallic:金属度贴图,每个像素的金属度,可以
阅读全文
摘要:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "Earth" { Properties { _AtmosphereColor ("Atmosphere Color", Color) = (0.1, 0.35, 1.0, 1.0)...
阅读全文
摘要:实现一个基于屏幕后处理的热场空气扭曲效果,用来烘托战场氛围。原理其实非常简单,对于渲染完成的贴图做一个扰动效果即可。 代码(挂在主camera上才有效果): 屏幕效果shader: camera上脚本设置: 参数说明: shader:直接将上述shader拖过去即可 speedx/speedy:横向
阅读全文
摘要:shader里面光照计算毕竟还是比较复杂的,于是想到下面的性能相对好一些的方案。 美术提供一张Diffuse贴图,一张lightmap贴图,然后在应用一个自定义的全局的环境光效果,来模拟静态的光照。 每个模型单独提供自己的lightmap贴图,而不是使用场景烘焙出来的包含所有物体的liangmap,
阅读全文
摘要:#pragma multi_compile_fwdbase是unity内置的用于前向渲染的关键字快捷方式,它包含了前向渲染光照计算需要的大多数关键字,因此会被shader带来很多的变体。 下面这个简单的shader有8个变体: 我们来看一下这些变体都有谁: 然后我们去掉multi_compile_f
阅读全文
摘要:在上一篇帖子的基础上增加一张法线贴图即可:
阅读全文
摘要:项目中美术使用了Unity自带的Mobile/Diffuse这个shader制作了一部分场景素材,这个shader会依赖场景中的动态实时光源,比较耗费。 于是自己手动重写一份,简化shader的消耗,但同时保持美术已经制作场景的效果。 我在原始shader上添加了一些编译选项用来关闭一些特性,但编译
阅读全文
摘要:直接贴代码: Start和End表示序列帧的显示范围,从0开始计数,最大值为XCell * YCell - 1。 运行效果如下: 说明:图片来自百度图片搜索
阅读全文
摘要:基于深度视差可以用来做很多效果,比如水的深度效果之类的。
阅读全文
摘要:问题:为什么需要把法线纹理的“Texture Type”设置成“Normal Map”才能正确显示。 回答:这样的设置可以让Unity根据不同平台对纹理进行压缩,通过UnpackNormal函数对法线纹理进行正确的采样,即“将把颜色通道变成一个适合于实时法向映射的格式”。 问题:把“Texture
阅读全文
摘要:对于顶点来说,从object Space转换到eye space, 使用model-view矩阵就好了.那么顶点的法线是否也可以直接使用model-view矩阵转化? 通常情况下是不行的. 如下两张图是顶点的tangent和normal向量使用m-v矩阵从object space到eye space
阅读全文
摘要:简单写写,练下手~ 将上面的Shader改写一下,添加BumpTex,并使用一张RimTex来映射边缘光的强度: 注意上述代码是在切空间中计算rim的颜色强度。
阅读全文
摘要:下述代码列出了几种勾边的实现思路,实际游戏中在屏幕空间扩展法线的方案,基本上就够用了: 通过offset操作,来实现描边的效果: 这个方法不是太实用,只是一种实现思路。 使用的方案是UnityPro提供的AssetsPackage中现成的ToonShader。 http://wiki.unity3d
阅读全文
摘要:一、基本知识点 1、Baked Only:不会传入shader,只有烘焙时才有用,也就是_LightColor0等这种变量不会表示一个Baked Only Light(前提是场景有lightmap,如果没有烘培,baked only的参数没有意义); (1)烘焙完以后,再将Realtime On...
阅读全文
摘要:Lambert光照模型,根据光照向量与顶点法线的夹角来确定光照强度: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "James/Lambert" { Propert
阅读全文

浙公网安备 33010602011771号