Search Unity

VFX Shader recreation

Discussion in 'Shaders' started by AedanCGraves, Sep 29, 2017.

  1. AedanCGraves

    AedanCGraves

    Joined:
    Jan 6, 2016
    Posts:
    14
    So I'm very numb when it comes to shaders... I was looking around the internet for a shader to use as a quick transition between game views, and I found this:

    I don't have Shader Forge to recreate it though. But I saw that the video had a snip-it of the code, so I went as far as I could with that snip-it and need help finishing it.

    Heres my code:

    Code (CSharp):
    1. // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
    2. // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
    3. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
    4.  
    5. Shader "Custom/Transitioneffect" {
    6.     Properties {
    7.          _offset("offset",range(0,1)) = 0.5
    8.          _Scale ("Scale", Range(0,1)) =1
    9.          _Transform("Transform", Range(-0.1,1)) =0.5
    10.          _Normal_Switch("Normal_Switch", range(0,1))=0
    11.          _matCap_Out("matCap_out",2D)="white"{}
    12.          _matCap_In("matCap_In",2D)="white"{}
    13.          _Normal("Normal",2D)="white"{}
    14.          _Emissive("Emissive",2D)="white"{}
    15.          _edge_Color("edge_Color",Color) = (0.02829963,0.160451,1,1)
    16.          _edge("edge",float)=2
    17.          _microchip_Color("microChip_Color",Color)= (1,0.354,0,1)
    18.          _microship("MicroChip",float) =2
    19.     }
    20.     SubShader {
    21.         Tags { "RenderType"="Opaque" }
    22.  
    23.         Pass{
    24.         Name "FORWARD"
    25.         Tags{"LightMode"="ForwardBase"}
    26.         Cull Off
    27.  
    28.         CGPROGRAM
    29.         #pragma vertex vert
    30.         #pragma fragment frag
    31.         #define UNITY_PASS_FORWARDBASE
    32.         #include "UnityCG.cginc"
    33.         #pragma multi_compile_fwdbase_fullshadows
    34.         #pragma exclude_renderers gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
    35.         #pragma targate 3.0
    36.         uniform float4 _TimeEditior;
    37.         uniform float _offset;
    38.         uniform float _Transform;
    39.         uniform sampler2D _matCap_Out; uniform float4 _matCap_Out_ST;
    40.         uniform float _Scale;
    41.         uniform sampler2D _matCap_In; uniform float4 _matCap_In_ST;
    42.         uniform sampler2D _Normal; uniform float4 _Normal_ST;
    43.         uniform float _Normal_Switch;
    44.         uniform sampler2D _Emissive; uniform float4 _Emissive_ST;
    45.         uniform float4 _edge_Color;
    46.         uniform float _edge;
    47.         uniform float4 _microchip_Color;
    48.         uniform float _microchip;
    49.         struct VertexInput{
    50.              float4 vertex : POSITION;
    51.              float3 normal : NORMAL;
    52.              float2 texcoord0 : TEXCOORD0;
    53.              float2 texcoord1 : TEXCOORD1;
    54.              float2 texcoord2 : TEXCOORD2;
    55.         };
    56.         struct VertexOutput{
    57.               float4 pos : SV_POSITION;
    58.               float2 uv0 : TEXCOORD0;
    59.               float2 uv1 : TEXCOORD1;
    60.               float2 uv2 : TEXCOORD2;
    61.               float4 posWorld : TEXCOORD3;
    62.               float3 normalDir : TEXCOORD4;
    63.         };
    64.         VertexOutput vert (VertexInput v) {
    65.              VertexOutput o = (VertexOutput)0;
    66.              o.uv0 = v.texcoord0;
    67.              o.uv1 = v.texcoord1;
    68.              o.uv2 = v.texcoord2;
    69.              o.normalDir = UnityObjectToWorldNormal(v.normal);
    70.              float node_1665 = 0.0;
    71.              float transform = saturate((node_1665 + ((o.uv1.g -_Transform) *(1.0 - node_1665))/((0.1+ _Transform) - _Transform)));
    72.              float3 node_9074 = mul(unity_WorldToObject, float4(mul(unity_ObjectToWorld, v.vertex).rgb,1)).xyz;
    73.              v.vertex.xyz += ((v.normal * _offset*transform)+(_Scale*(node_9074.rgb -(v.normal * dot(node_9074.rgb, v.normal)/dot(v.normal,v.normal)))*(-1.0)*transform));
    74.              o.posWorld = mul(unity_ObjectToWorld, v.vertex);
    75.              o.pos = UnityObjectToClipPos(v.vertex);
    76.              return o;
    77.         }
    78.         float4 frag(VertexOutput i, float facing : VFACE) : COLOR{
    79.               float isFrontFace = (facing >= 0 ? 1:0);
    80.               float faceSign = (facing >= 0 ? 1:-1);
    81.               i.normalDir = normalize(i.normalDir);
    82.               i.normalDir *= faceSign;
    83.               float3 viewDirection = = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
    84.               float3 normalDirection = i.normalDir;
    85.               float4 _Emissive_var - tex2D(_Emissive, TRANSFORM_TEX(i.uv2,_Emissive));
    86.               float4 _Normal_var = tex2D(_Normal, TRANSFORM_TEX(i.uv0, _Normal));
    87.               float2 node_1864 = (mul(UNITY_MATRIX_V, float4)lerp((_Normal_var.rgb*2.0+-1.0),i.normalDir,_Normal_Switch),0)).xyz.rgb.rg*0.5+0.5);
    88.               float4 _matCap_in_var = tex2D(_matCap_In,TRANSFORM_TEX(node_1864, _matCap_In));
    89.               float4 _matCap_out_var = tex2D(_matCap_Out,TRANSFORM_TEX(node_1864, _matCap_Out));
    90.               float4 node_1843 = _Time + _TimeEditor;
    91.               float3 emissive = ((_edge_Color.rgb*_Emissive_var.r*_edge)+lerp(_matCap_in_var.rgb,_matCap_out_var.rgb,IsFrontFace)+(saturate(((i.uv0.r+sin(((node_1843.g*(-6.0))+(i.uv1.g* // line was cut off at the end bit here.
    92.               float3 finalColor = emissive;
    93.               return fixed4(/*FinalColor?*/);
    94.              
    95.         }
    96.  
    97.         ENDCG
    98.         }
    99.     }
    100.     FallBack "Diffuse"
    101. }
    102.  
    If it makes it easier, I don't plan on using the microchip bit, so don't bother setting that up if its not required.

    again I'm very numb with shaders so if something looks obvious. I didn't know. :p
    also, TEACH ME THINGS! I'm trying to better understand shader lab so if you could post an answer in a way that'll help me do that while not being cryptic, I would appreciate it!

    Many Thanks!