钢铁侠材质制作——1、模型发光部分的材质制作

钢铁侠Unlit光照Shader,三种效果变化

返回目录

大家好,我是阿赵。这里是制作钢铁侠材质的第一部分,模型发光部分的材质制作。
在这里插入图片描述

1、效果分析

这一个部分只是处理眼睛、胸口、手掌的发光部位,为了能单独控制这些部分,所以在制造模型的时候,需要给这些部位的网格指定Channel为2,这样,在使用多维子材质的时候,就可以单独为这些发光的shader指定一个材质球。
在这里插入图片描述

其实多维子材质在我平常在游戏引擎里面是比较的不喜欢用的,因为一个模型用了多个材质球,本身就是多个pass。但针对这个例子本身来说,钢铁侠的身体材质本身会比较复杂,而发光的部位本身会比较的单纯,如果分开来计算,对性能反而是有帮助的。
在做了通道指定之后,在导入引擎使用时,就可以指定2个材质球了,第一个材质球是身体部分的,第二个材质球是发光部分的。
在这里插入图片描述

2、完整shader

Shader "azhao/IronManLightCode"
{
    Properties
    {
		[HDR]_lightCol("lightCol", Color) = (1,1,1,0)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
            };

            struct v2f
            {
                float4 vertex : SV_POSITION;
            };

			float4 _lightCol;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
				fixed4 col = _lightCol;
                return col;
            }
            ENDCG
        }
    }
}

3、说明

可以看出,上面的shader非常的简单,只是指定了一个lightCol作为灯光的颜色而已。
需要注意的是,这里的颜色定义使用了HDR

[HDR]_lightCol("lightCol", Color) = (1,1,1,0)

在这里插入图片描述

具体什么是HDR颜色,各位可以自己去搜一下。我简单说明就是,平常我们使用的颜色都是LDR,L指Low,它的颜色强度取值范围都是0-1的,而HDR的H指的是High,它的颜色强度取值范围是可以超过1的。
在这里插入图片描述

不过单纯是设置了HDR颜色之后,会发现模型也没有发光
在这里插入图片描述

然后我们再添加一个Bloom屏幕后处理:
在这里插入图片描述

在这里插入图片描述

可以看到现在是已经发光了。
在旧版本的Unity屏幕后处理,并没有支持HDR效果,所以旧版本的Bloom只是单纯的模糊再叠加,所以是越接近白色的地方越亮。
Unity新的Post-process后处理系统支持了HDR效果之后,就变成了根据HDR颜色来做辉光效果,就算是白色,但如果HDR强度小于等于0时,也不会发光。
知道了这个规则之后,我们就可以调整HDR颜色,做出不同的发光效果。
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/liweizhao/article/details/130031524