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