- Replace iGlobalTime shader input (“shader playback time in seconds”) with _Time.y
- Replace iResolution.xy (“viewport resolution in pixels”) with _ScreenParams.xy
- Replace vec2 types with float2, mat2 with float2x2 etc.
- Replace vec3(1) shortcut constructors in which all elements have same value with explicit float3(1,1,1)
- Replace Texture2D with Tex2D
- Replace atan(x,y) with atan2(y,x) <- Note parameter ordering!
- Replace mix() with lerp()
- Replace *= with mul()
- Replace signed integer vector ive2, ivec3, ivec4 with int2, int3,int4
- Replace iTime with _Time
- Remove third (bias) parameter from Texture2D lookups
- mainImage(out vec4 fragColor, in vec2 fragCoord) is the fragment shader function, equivalent to float4 mainImage(float2 fragCoord : SV_POSITION) : SV_Target
- UV coordinates in GLSL have 0 at the top and increase downwards, in HLSL 0 is at the bottom and increases upwards, so you may need to use uv.y = 1 – uv.y at some point.
- Replace fract with frac
- Replace function dFdx with ddx
- Replace function dfdy with ddy
- Replace point with vPoint
- fragCoord in GLSL
-
Default Unity shader naming :
HLSL - Shader Lab in Unity
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
In frag method:
In frag method:
fixed4 frag (v2f i) : SV_Target
{
// GLSL - fragCoord, fragCoord.xy = i.vertex.xy
i.vertex.position
}
In GLSL we would have method:
In GLSL we would have method:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
}
- Replace mod with fmod
I took some information from https://alastaira.wordpress.com/2015/08/07/unity-shadertoys-a-k-a-converting-glsl-shaders-to-cghlsl/
Comments
Post a Comment