- Home /
 
 
               Question by 
               $$anonymous$$ · May 05, 2017 at 01:13 PM · 
                unity 5shadershader programmingshader-replacement  
              
 
              How can i combine shaders?
I need this shader for clipping objects working with the vertex colored mobile shader.
  Shader "Clip/Plane" {
 Properties {
 
   _PlanePoint ("Plane Point", Vector) = (0,0,0,0)
   _PlaneNormal ("Plane Normal", Vector) = (1,0,0,0)
   
   _ConvertEmission ("Convert Emission", Range(0,1)) = 0.5
   _ConvertDistance ("Conversion Distance", float) = 0.5
   _Conversion ("Conversion (RGB)", 2D) = "white" {}
 
   _MainTex ("Main Texture", 2D) = "white" {}
   _BumpMap ("Bumpmap", 2D) = "bump" {}
   
   _Glossiness ("Smoothness", Range(0,1)) = 0.5
   _Metallic ("Metallic", Range(0,1)) = 0.0
 }
 SubShader {
   Tags { "RenderType" = "Opaque" }
   Cull Off
   CGPROGRAM
   // Physically based Standard lighting model, and enable shadows on all light types
   #pragma surface surf Standard fullforwardshadows
   // Use shader model 3.0 target, to get nicer looking lighting
   #pragma target 3.0
     
   struct Input {
       float2 uv_MainTex;
       float2 uv_BumpMap;
       float2 uv_Conversion;
       float3 worldPos;
   };
   half _Glossiness;
   half _Metallic;
   half _ConvertDistance;
   half _ConvertEmission;
   
   float3 _PlanePoint;
   float3 _PlaneNormal;
   
   sampler2D _MainTex;
   sampler2D _BumpMap;
   sampler2D _Conversion;
   
   
   void surf (Input IN, inout SurfaceOutputStandard o) {
   
      //clip (frac((IN.worldPos.y+IN.worldPos.z*0.1) * 5) - 0.5);
      // clip ( distance( IN.worldPos, _Point) - _Distance);
      
      _PlaneNormal = normalize(_PlaneNormal);
       
       half dist = (IN.worldPos.x * _PlaneNormal.x) + (IN.worldPos.y * _PlaneNormal.y) + (IN.worldPos.z * _PlaneNormal.z)
     - (_PlanePoint.x * _PlaneNormal.x) - (_PlanePoint.y * _PlaneNormal.y) - (_PlanePoint.z * _PlaneNormal.z) 
     / sqrt( pow(_PlaneNormal.x, 2) + pow(_PlaneNormal.y, 2) + pow(_PlaneNormal.z,2));
       
       // distance from plane
       clip(dist);
       
       
       // min = 0 // value = dist // max = _ConvertDistance
       float convert_mask = dist / _ConvertDistance;
       convert_mask = clamp(convert_mask, 0, 1);
       fixed4 albedo = tex2D (_MainTex, IN.uv_MainTex);
       albedo *= convert_mask;
       
       fixed4 convert = tex2D (_Conversion, IN.uv_Conversion);
       convert *= 1.0 - convert_mask;
       
       o.Albedo = albedo.rgb + convert.rgb ;
       o.Emission = convert.rgb  * _ConvertEmission;
       o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
       o.Metallic = _Metallic;
       o.Smoothness = _Glossiness;
       o.Alpha = albedo.a + convert.a;
       
   }
   ENDCG
 }
 Fallback "Diffuse"
 }
 
               The Vertex Colored Mobile shader from Standard Assets(mobile) on unity.
 Shader "Mobile/Vertex Colored" {
 Properties {
 _Color ("Main Color", Color) = (1,1,1,1)
 _SpecColor ("Spec Color", Color) = (1,1,1,1)
 _Emission ("Emmisive Color", Color) = (0,0,0,0)
 _Shininess ("Shininess", Range (0.01, 1)) = 0.7
 _MainTex ("Base (RGB)", 2D) = "white" {}
 }
 
 SubShader {
     Pass {
     Material {
         Shininess [_Shininess]
         Specular [_SpecColor]
         Emission [_Emission]    
     }
     ColorMaterial AmbientAndDiffuse
     Lighting Off
     Fog { Mode Off }
     SetTexture [_MainTex] {
         Combine texture * primary, texture * primary
     }
     SetTexture [_MainTex] {
         constantColor [_Color]
         Combine previous * constant DOUBLE, previous * constant
     } 
 }
 }
 
 Fallback " VertexLit", 1
 }
 
              
               Comment
              
 
               
              It's a bit difficult considering they're in two different languages and you haven't specified which parts you want from each shader.
Your answer