ShaderToy 转换到 Unity中(超级方便的一个工具)

ShaderToy 转换到Unity中

ShaderToy 我们都知道它是一个神奇的网站,在上面有着许多炫酷的特效,各路大神集聚。但是里面shader都是GLSL写的。

如果我们想把ShaderToy上的特效移植到Unity中就需要我们手动去修改代码,修改方法无非就是:定义一系列宏来和ShaderToy中的GLSL衔接,如下模板:

Shader "Shadertoy/Template" { 
    Properties{
        iMouse ("Mouse Pos", Vector) = (100, 100, 0, 0)
        iChannel0("iChannel0", 2D) = "white" {}  
        iChannelResolution0 ("iChannelResolution0", Vector) = (100, 100, 0, 0)
    }
 
    CGINCLUDE    
    #include "UnityCG.cginc"   
    #pragma target 3.0      
 
    #define vec2 float2
    #define vec3 float3
    #define vec4 float4
    #define mat2 float2x2
    #define mat3 float3x3
    #define mat4 float4x4
    #define iGlobalTime _Time.y
    #define mod fmod
    #define mix lerp
    #define fract frac
    #define texture2D tex2D
    #define iResolution _ScreenParams
    #define gl_FragCoord ((_iParam.scrPos.xy/_iParam.scrPos.w) * _ScreenParams.xy)
 
    #define PI2 6.28318530718
    #define pi 3.14159265358979
    #define halfpi (pi * 0.5)
    #define oneoverpi (1.0 / pi)
 
    fixed4 iMouse;
    sampler2D iChannel0;
    fixed4 iChannelResolution0;
 
    struct v2f {    
        float4 pos : SV_POSITION;    
        float4 scrPos : TEXCOORD0;   
    };              
 
    v2f vert(appdata_base v) {  
        v2f o;
        o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
        o.scrPos = ComputeScreenPos(o.pos);
        return o;
    }  
 
    vec4 main(vec2 fragCoord);
 
    fixed4 frag(v2f _iParam) : COLOR0 { 
        vec2 fragCoord = gl_FragCoord;
        return main(gl_FragCoord);
    }  
 
    vec4 main(vec2 fragCoord) {
        return vec4(1, 1, 1, 1);
    }
 
    ENDCG    
 
    SubShader {    
        Pass {    
            CGPROGRAM    
 
            #pragma vertex vert    
            #pragma fragment frag    
            #pragma fragmentoption ARB_precision_hint_fastest     
 
            ENDCG    
        }    
    }     
    FallBack Off    
}

但是也有点太麻烦了,此时我们就可以借助GitHub上的这个工具自动转换,方便太多了。

下面就简单介绍一下使用方法:

一:首先克隆该项目到本地,用Unity打开

里面有一些例子:

在这里插入图片描述

二:在ShaderToy上找到自己喜欢的特效,并且克隆代码

在这里插入图片描述

三:在Unity 打开 Window —> ShaderMan,并且copy刚才的代码到输入框里,点击转换即可在ShaderToy文件夹下找到转换后的shader文件

在这里插入图片描述

在这里插入图片描述

发布了55 篇原创文章 · 获赞 885 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_28299311/article/details/104897851