diff options
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_FresnelNode.shader')
-rw-r--r-- | Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_FresnelNode.shader | 358 |
1 files changed, 0 insertions, 358 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_FresnelNode.shader b/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_FresnelNode.shader deleted file mode 100644 index 256a4d66..00000000 --- a/Assets/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_FresnelNode.shader +++ /dev/null @@ -1,358 +0,0 @@ -Shader "Hidden/FresnelNode" -{ - Properties - { - _A ("_Normal", 2D) = "white" {} - _B ("_Bias", 2D) = "white" {} - _C ("_Scale", 2D) = "white" {} - _D ("_Power", 2D) = "white" {} - _E ("_View", 2D) = "white" {} - } - SubShader - { - Pass //not connected world - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - //sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - int _FresnelType; - - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-saturate(dot(xy,xy))); - float3 vertexPos = float3(xy, z); - float3 worldNormal = normalize(float3(xy, z)); - float3 worldViewDir = normalize(float3(0,0,-5) - vertexPos); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( worldNormal, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //connected world - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - int _FresnelType; - - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-saturate(dot(xy,xy))); - float3 vertexPos = float3(xy, z); - float3 worldNormal = tex2D( _A, i.uv ); - float3 worldViewDir = normalize(float3(0,0,-5) - vertexPos); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( worldNormal, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //connected tangent - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - int _FresnelType; - - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-saturate(dot(xy,xy))); - float3 vertexPos = float3(xy, z); - float3 worldNormal = normalize(float3(xy, z)); - - float3 tangent = normalize(float3( -z, xy.y*0.01, xy.x )); - float3 worldPos = mul(unity_ObjectToWorld, float4(vertexPos,1)).xyz; - float3 worldTangent = UnityObjectToWorldDir(tangent); - float tangentSign = -1; - float3 worldBinormal = normalize( cross(worldNormal, worldTangent) * tangentSign); - float4 tSpace0 = float4(worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x); - float4 tSpace1 = float4(worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y); - float4 tSpace2 = float4(worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z); - - float2 sphereUVs = i.uv; - - sphereUVs.x = (atan2(vertexPos.x, -vertexPos.z) / (UNITY_PI) + 0.5); - float3 tangentNormal = tex2D(_A, sphereUVs).xyz; - - worldNormal = fixed3( dot( tSpace0.xyz, tangentNormal ), dot( tSpace1.xyz, tangentNormal ), dot( tSpace2.xyz, tangentNormal ) ); - - float3 worldViewDir = normalize(float3(0,0,-5) - vertexPos); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( worldNormal, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //not connected half vector - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - //sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - int _FresnelType; - float4 _EditorWorldLightPos; - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-(dot(xy,xy))); - float3 vertexPos = normalize(float3(xy, z)); - float3 worldViewDir = normalize(float3(0,0,-5) - vertexPos); - float3 lightDir = normalize( _EditorWorldLightPos.xyz ); - float3 halfVector = normalize(worldViewDir+lightDir); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( halfVector, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( halfVector, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( halfVector, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //connected both - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - sampler2D _E; - int _FresnelType; - - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-saturate(dot(xy,xy))); - float3 vertexPos = float3(xy, z); - float3 worldNormal = tex2D( _A, i.uv ); - float3 worldViewDir = tex2D( _E, i.uv );; - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( worldNormal, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //not connected world and light - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - //sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - int _FresnelType; - float4 _EditorWorldLightPos; - - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-(dot(xy,xy))); - float3 vertexPos = normalize(float3(xy, z)); - float3 normal = normalize(vertexPos); - float3 worldNormal = UnityObjectToWorldNormal(normal); - float3 lightDir = normalize( _EditorWorldLightPos.xyz ); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( worldNormal, lightDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( worldNormal, lightDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( worldNormal, lightDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //connected view - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - sampler2D _E; - int _FresnelType; - - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-saturate(dot(xy,xy))); - float3 vertexPos = float3(xy, z); - float3 normal = normalize(vertexPos); - float3 worldNormal = UnityObjectToWorldNormal(normal); - float3 worldViewDir = tex2D( _E, i.uv ); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( worldNormal, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( worldNormal, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - - Pass //not connected half vector with connected view - { - CGPROGRAM - #include "UnityCG.cginc" - #pragma vertex vert_img - #pragma fragment frag - - //sampler2D _A; - sampler2D _B; - sampler2D _C; - sampler2D _D; - sampler2D _E; - int _FresnelType; - float4 _EditorWorldLightPos; - float4 frag(v2f_img i) : SV_Target - { - float b = tex2D( _B, i.uv ).r; - float s = tex2D( _C, i.uv ).r; - float pw = tex2D( _D, i.uv ).r; - - float2 xy = 2 * i.uv - 1; - float z = -sqrt(1-(dot(xy,xy))); - float3 vertexPos = normalize(float3(xy, z)); - float3 worldViewDir = tex2D( _E, i.uv ); - float3 lightDir = normalize( _EditorWorldLightPos.xyz ); - float3 halfVector = normalize(worldViewDir+lightDir); - - float fresnel = 0; - if(_FresnelType == 0) - fresnel = (b + s*pow(1 - dot( halfVector, worldViewDir ) , pw)); - else if(_FresnelType == 1) - fresnel = (b + (1-b) * pow(1 - dot( halfVector, worldViewDir ) , 5)); - else if(_FresnelType == 2) - { - float f0 = pow((1-s)/(1+s),2); - fresnel = (f0 + (1-f0) * pow(1 - dot( halfVector, worldViewDir ) , 5)); - } - return fresnel; - } - ENDCG - } - } -} |