Shader "Unlit/PortalShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
float4 screenPos : TEXCOORD1;
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
o.screenPos = ComputeScreenPos(o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
//Use screen coordinate as UV
float2 uv = i.screenPos.xy / i.screenPos.w;
// sample the texture
fixed4 col = tex2D(_MainTex, uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}
Hi, fellow Game Devs!
Here is the shader source code of our tutorial on how to create a "Portal Shifting" shader.
https://www.youtube.com/watch?v=1gtXuJkKD2A
More tutorials on: -> https://goo.gl/HtSras <-
One way to improve this shader would be using a mask to give it soft borders.
(Masking will certainly be the subject of an upcoming tutorial, stay tunedl)
Feel free to give us your feedback to help us improve the upcoming tuts!
Here is the shader source code of our tutorial on how to create a "Portal Shifting" shader.
https://www.youtube.com/watch?v=1gtXuJkKD2A
More tutorials on: -> https://goo.gl/HtSras <-
One way to improve this shader would be using a mask to give it soft borders.
(Masking will certainly be the subject of an upcoming tutorial, stay tunedl)
Feel free to give us your feedback to help us improve the upcoming tuts!
1 Response
Write a comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.