2016-04-28 5 views
0

このシェーダはフリッカーを作成しようとしていますので、放出値を0と1、それは私がマテリアルをクリックするか、エディタでスクロールする場合にのみ機能します。私はこれを理解することはできません、助けてください?シェーダのエミッションを更新するとき、エディタをクリックしたときにのみ更新されます。[Unity]

私はこれに似たものをチェックしましたが、それでも動作しないので、助けてください。

Renderer renderer; 
Material material; 
float emission; 

// Use this for initialization 
void Start() { 
    renderer = GetComponent<Renderer>(); 
    material = renderer.material; 
} 

// Update is called once per frame 
void Update() { 

    emission = Mathf.PingPong (Time.time, 1f); 
    Color color = Color.red; 

    Color finalColor = color * Mathf.LinearToGammaSpace (emission); 
    material.SetColor ("_EmissionColor", finalColor); 

} 

答えて

0

私はあなたのような 嘆願を問題を解決したが、私たちに感謝

をあなたのシェーダーを共有ピンポンを取得するためにMathf.sin(Time.time)をしてみてください多分あなたの問題は

または 使用に打撃シェーダを解決

Shader "Custom/Emition" { 
    Properties { 
     _MainTex ("Albedo (RGB)", 2D) = "white" {} 
     _EmissionColor ("Bright", Float) = 1.0 
    } 
    SubShader { 
     Tags { "RenderType"="Opaque" } 
     LOD 200 
     pass { 
     CGPROGRAM 

     #pragma vertex vert    
     #pragma fragment frag 

     #include "UnityCG.cginc" 


     uniform float _EmissionColor; 
     sampler2D _MainTex; 
     struct vertexInput { 
      float4 vertex : POSITION;   
      float2 texcoord : TEXCOORD0; 
     }; 

     struct vertexOutput { 
      float4 pos : SV_POSITION; 
      float2 uv : TEXCOORD0; 
     }; 


     vertexOutput vert(vertexInput input) 
     { 
      vertexOutput output; 
      output.pos = mul(UNITY_MATRIX_MVP, input.vertex); 

      output.uv = input.texcoord; 
      return output; 
     } 

     float4 frag(vertexOutput input) : COLOR 
     { 
      fixed4 c = tex2D (_MainTex , input.uv) ; 



      /// change blow line 


      return c* float4(_EmissionColor,1,1,1); 

     } 
     ENDCG 
    } 
    } 
    FallBack "Diffuse" 
} 
+0

フラグメントシェーダは安全でanybugはありません –

関連する問題