Unity shader 写一个垃圾的 黄金shader

12 篇文章 0 订阅
11 篇文章 0 订阅

Unity shader 写一个垃圾的 黄金shader

每当写了一个shader之后,不由然的有了一种愧疚的感觉,难道就这样的写完了,我觉得写unity shader这个过程应该是种享受,那种失败了又失败,那种灵感一次又一次的的隐现又消失,
rgba、xyzw…etc,如此般的一会儿在窗户外,一会儿在空气中,一会儿在透过窗户的光线中,甚至是通过静谧的空气中恩雅的音乐,我想写下它,留住它的美…..


这黄金shader到底有多垃圾

  1. 这个效果我看了,简直是惨不忍睹
    这里写图片描述

    1.首先怪gif只能上传2MB
    2.其次是,这么光泽的是黄金吗?
    3.为什么我一点感觉没有了.
    4.整个世界都是TA们的流行音乐刺激着耳朵,我都不好意思再放恩雅的音乐,放舒曼的童年,放牛班的春天….整个心都碎了.
    5.踩踩梧桐树掉下的种子…..一堆又一堆,像是踩着shader的感觉,可我的小伙伴们都惊呆了…

什么是黄金

1.生活才是一种追求,shader就是对生活的一种完善。
2.一块肥皂能让你干什么?
这里写图片描述
我毫不犹豫的在Blender中快速的创建了块肥皂,你看嘛!!!
这里写图片描述
导出为.FBX文件,不然呢?.obj也不错哦!
3.把效果实现的肥皂科技黑
先给它一个视线方向的漫反射
这里写图片描述
视线与法线相近的地方变得亮
这里写图片描述

4.把黑科技做成白银金属感
我们还是猜猜这种反射吧!
这里写图片描述

哇!有同学一定会知道Cubemap吧???

啊!这种感受,一闭眼就像看到水痕反射的天空。

这里写图片描述
于是我发现它太亮,-0.2是我的选择
col.rgb*viewDiff*Cubemap这又是一种选择,viewdiff是结合反射效果美的表现
5.这这,,这这,,,我到底干了什么?我把颜色变了,,,
这里写图片描述
你猜猜我做错了什么,居然这样啊!!!

我发现我原来用了它——>>这里写图片描述
对!就是它啊,它就是1D纹理查询
这里写图片描述

shader 让我懂得了世界可以用另一种表达方式

1.写点伤心的效果,让shader变得无知

这里写图片描述
这里写图片描述
这可以增加代码量,让shader变得充实,而它无知,,为什么,,让它更加的骄傲,,更加的有地位。。。

这里写图片描述
这里写图片描述
2.它的颜色投射出它曾经是个黄铜
这里写图片描述让你去改变它的内质的美,用rgb凸显一股铜钱味。

shader 出卖的不是代码的酷,而是它那种用代码悄悄地走进你生活之中

Shader "Custom/Gold" {
    Properties {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _CubeTexure ("Cube map", CUBE) = "white" {}
        _Specular ("_Specular", Range(0.0, 15.0)) = 0.0
        _SpecularColor ("_Specular Color", Color) = (1.0, 1.0, 1.0, 1.0)
        _FuckTexure ("Fuck Texure", Color) = (1.0, 1.0, 1.0, 1.0)
        _TinColor ("_Tin Color", Color) = (1.0, 1.0, 1.0, 1.0)
        _Spe2 ("_Spe2 Color", Range(0.0, 15.0)) =0.0 

    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 200

        Pass{
            Tags { "LightMode"="ForwardBase" }
            CGPROGRAM
                #pragma vertex vert 
                #pragma fragment frag 
                #include "UnityCG.cginc"

                sampler1D _MainTex;
                samplerCUBE _CubeTexure;
                float4 _MainTex_ST;

                float _Specular;
                fixed4 _SpecularColor;
                fixed4 _FuckTexure;

                struct vertIN{
                    float4 vertex : POSITION;
                    float2 tex : TEXCOORD0;
                    fixed3 normal : NORMAL;
                };
                struct vertOUT{
                    float4 pos : SV_POSITION;
                    float2 uv : TEXCOORD0;
                    fixed3 nDir : TEXCOORD1;
                    fixed3 vDir : TEXCOORD2;
                    fixed3 lDir : TEXCOORD3;
                    fixed3 rDir : TEXCOORD4;
                    fixed3 reDir : TEXCOORD5;
                };

                vertOUT vert(vertIN i){
                    vertOUT o;
                    o.pos = mul(UNITY_MATRIX_MVP,i.vertex);
                    o.uv = TRANSFORM_TEX(i.tex,_MainTex);
                    o.nDir = normalize(mul(_Object2World,i.normal));
                    o.vDir = normalize(WorldSpaceViewDir(i.vertex));
                    o.lDir = normalize(WorldSpaceLightDir(i.vertex));
                    fixed3 lDir = o.lDir;
                    fixed3 nDir = o.nDir;
                    o.rDir = normalize(reflect(-lDir,nDir));
                    o.reDir = normalize(reflect(o.vDir,nDir));
                    return o;
                }
                fixed4 frag(vertOUT ou):COLOR {

                    fixed diff = max(0,dot(ou.nDir,ou.lDir));

                    fixed viewDiff = max(0,dot(ou.nDir,ou.vDir));
                    fixed4 col = tex1D(_MainTex,viewDiff);
                    fixed rimDiff = pow(1 - viewDiff,12);
                    fixed speDiff = diff * pow(max(0,dot(ou.vDir,ou.rDir)),_Specular);
                    fixed3 Cubemap = texCUBE(_CubeTexure,ou.reDir).rgb - 0.2; 
                    fixed3 c = col.rgb*viewDiff*Cubemap + col.a*speDiff*_SpecularColor ;
                    return fixed4(c,col.a);
                }
            ENDCG
        }
        Pass{
            Tags { "LightMode" = "ForwardAdd" }
            Blend One One
            CGPROGRAM
            #pragma vertex vert 
            #pragma fragment frag 
            #include "UnityCG.cginc"

            sampler1D _MainTex;
            float4 _TinColor;
            float _Spe2;

            float4 _MainTex_ST;
            float4 _LightColor0;
            struct vertIN{
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                float2 tex : TEXCOORD0;
            };
            struct vertOUT{
                float4 pos : SV_POSITION;
                float3 nDir : TEXCOORD0;
                float2 uv : TEXCOORD1;
                float3 vDir : TEXCOORD2;
                float3 lDir :TEXCOORD3; 
            };
            vertOUT vert (vertIN i){
                vertOUT o;
                o.pos = mul(UNITY_MATRIX_MVP,i.vertex);
                half3 vert = mul(_Object2World,i.vertex);
                o.nDir = normalize(mul(_Object2World,float4(i.normal,0.0)).xyz);
                o.uv = TRANSFORM_TEX(i.tex,_MainTex);
                o.vDir = normalize(_WorldSpaceCameraPos - mul(_Object2World,i.vertex).xyz );
                o.lDir = fixed4(
                    normalize(lerp(_WorldSpaceLightPos0,_WorldSpaceLightPos0.xyz - vert,_WorldSpaceLightPos0.w)),
                              lerp(1,1/length(_WorldSpaceLightPos0 - vert),_WorldSpaceLightPos0.w )
                );
                return o;
            }
            fixed4 frag(vertOUT ou):COLOR{
                fixed3 rDir = normalize(reflect(-ou.lDir,ou.nDir));
                half diff = saturate(dot(ou.lDir,ou.nDir));
                half rDOTn = saturate(dot(rDir,ou.vDir));
                fixed4 c = tex1D(_MainTex,ou.uv);
                c.rgb = diff*_LightColor0 + diff*pow (rDOTn,_Spe2)*_LightColor0;
                return c;
            }
            ENDCG
        }
    } 
    FallBack "Diffuse"
}

这里写图片描述

黄金要的是动态美,这黄铜哎!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值