Amplify_Borba wrote:Multi-pass support has been recently added and is present in the
current ASE release, however, a proper template must be used in order to create specific terrain types. We currently include a simple single-pass example, we might be able to include a more advanced example at a later stage.
We're also in the process of updating our
Multi-pass documentation, so stay tuned for more information regarding this new feature!
Thanks for the information.
Would you be able to help me
Achieve the same effect as this shader?
Code: Select all
Shader "PlanetaryTerrain/PlanetSurfaceShader" {
Properties {
_Tex1 ("Texture 0 (Beach)", 2D) = "white" {}
_Color1 ("Color", Color) = (1,1,1,1)
_Glossiness1 ("Smoothness", Range(0,1)) = 0.5
_Metallic1 ("Metallic", Range(0,1)) = 0.0
_TexScale1 ("Texture Scale", Float) = 1
_Tex2 ("Texture 1", 2D) = "white" {}
_Color2 ("Color", Color) = (1,1,1,1)
_Glossiness2 ("Smoothness", Range(0,1)) = 0.5
_Metallic2 ("Metallic", Range(0,1)) = 0.0
_TexScale2 ("Texture Scale", Float) = 1
_Tex3 ("Texture 2", 2D) = "white" {}
_Color3 ("Color", Color) = (1,1,1,1)
_Glossiness3 ("Smoothness", Range(0,1)) = 0.5
_Metallic3 ("Metallic", Range(0,1)) = 0.0
_TexScale3 ("Texture Scale", Float) = 1
_Tex4 ("Texture 3", 2D) = "white" {}
_Color4 ("Color 4", Color) = (1,1,1,1)
_Glossiness4 ("Smoothness", Range(0,1)) = 0.5
_Metallic4 ("Metallic", Range(0,1)) = 0.0
_TexScale4 ("Texture Scale", Float) = 1
_Tex5 ("Texture 4", 2D) = "white" {}
_Color5 ("Color", Color) = (1,1,1,1)
_Glossiness5 ("Smoothness", Range(0,1)) = 0.5
_Metallic5 ("Metallic", Range(0,1)) = 0.0
_TexScale5 ("Texture Scale", Float) = 1
_Tex6 ("Texture 5 (Mountains)", 2D) = "white" {}
_Color6 ("Color", Color) = (1,1,1,1)
_Glossiness6 ("Smoothness", Range(0,1)) = 0.5
_Metallic6 ("Metallic", Range(0,1)) = 0.0
_TexScale6 ("Texture Scale", Float) = 1
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows //vertex:vert
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _Tex1;
sampler2D _Tex2;
sampler2D _Tex3;
sampler2D _Tex4;
sampler2D _Tex5;
sampler2D _Tex6;
float _TexScale1;
float _TexScale2;
float _TexScale3;
float _TexScale4;
float _TexScale5;
float _TexScale6;
struct Input {
float2 uv_Tex1;
float2 uv4_Tex2;
float4 color: Color;
};
half _Glossiness1;
half _Metallic1;
fixed4 _Color1;
half _Glossiness2;
half _Metallic2;
fixed4 _Color2;
half _Glossiness3;
half _Metallic3;
fixed4 _Color3;
half _Glossiness4;
half _Metallic4;
fixed4 _Color4;
half _Glossiness5;
half _Metallic5;
fixed4 _Color5;
half _Glossiness6;
half _Metallic6;
fixed4 _Color6;
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c1 = tex2D (_Tex1, IN.uv_Tex1 * _TexScale1) * _Color1;
fixed4 c2 = tex2D (_Tex2, IN.uv_Tex1 * _TexScale2) * _Color2;
fixed4 c3 = tex2D (_Tex3, IN.uv_Tex1 * _TexScale3) * _Color3;
fixed4 c4 = tex2D (_Tex4, IN.uv_Tex1 * _TexScale4) * _Color4;
fixed4 c5 = tex2D (_Tex5, IN.uv_Tex1 * _TexScale5) * _Color5;
fixed4 c6 = tex2D (_Tex6, IN.uv_Tex1 * _TexScale6) * _Color6;
//half slopeIntensity = 1 - (IN.color.r + IN.color.g + IN.color.b + IN.color.a + IN.uv4_Tex2.x + IN.uv4_Tex2.y);
o.Albedo = IN.color.r * c1 + IN.color.g * c2 + IN.color.b * c3 + IN.color.a * c4 + IN.uv4_Tex2.x * c5 + IN.uv4_Tex2.y * c6;
o.Metallic = IN.color.r * _Metallic1 + IN.color.g * _Metallic2 + IN.color.b * _Metallic3 + IN.color.a * _Metallic4 + IN.uv4_Tex2.x * _Metallic5 + IN.uv4_Tex2.y * _Metallic6;
o.Smoothness = IN.color.r * _Glossiness1 + IN.color.g * _Glossiness2 + IN.color.b * _Glossiness3 + IN.color.a * _Glossiness4 + IN.uv4_Tex2.x * _Glossiness5 + IN.uv4_Tex2.y * _Glossiness6;
}
ENDCG
}
FallBack "Diffuse"
}
I have tried using weighted blends and the multiply node but not getting the same effect.
What I get is pretty close with Amplify shader, this is what I get in the code using the multiplier node.
Code: Select all
void surf( Input i , inout SurfaceOutputStandard o )
{
float2 uv_Tex1 = i.uv_texcoord * _Tex1_ST.xy + _Tex1_ST.zw;
float2 uv_Tex2 = i.uv_texcoord * _Tex2_ST.xy + _Tex2_ST.zw;
float2 uv_Tex3 = i.uv_texcoord * _Tex3_ST.xy + _Tex3_ST.zw;
float2 uv_Tex4 = i.uv_texcoord * _Tex4_ST.xy + _Tex4_ST.zw;
float2 uv_Tex5 = i.uv_texcoord * _Tex5_ST.xy + _Tex5_ST.zw;
float2 uv_Tex6 = i.uv_texcoord * _Tex6_ST.xy + _Tex6_ST.zw;
o.Albedo = ( tex2D( _Tex1, uv_Tex1 ) * tex2D( _Tex2, uv_Tex2 ) * tex2D( _Tex3, uv_Tex3 ) * tex2D( _Tex4, uv_Tex4 ) * tex2D( _Tex5, uv_Tex5 ) * tex2D( _Tex6, uv_Tex6 ) ).rgb;
o.Alpha = 1;
Like for instance how do I change the Texture scale with a node?
I am trying to get it to match the code above as close as possible.
Thanks