2016-07-29 35 views
11

Geçtiğimiz günlerde, görsel stüdyosunda birlik için gölgelendiriciler kodluyordum ve birliğin shader lab dili ve CG'nin birleşiminde birleşik shaderlar yazıldığından beri, visual studio 2015 dilleri tanımak gibi görünüyor. Bu nedenle, görsel stüdyosu yeni bir satıra gitmek için enter tuşuna bastığımda anahtar kelimeleri yeniden değil, herhangi bir intellesense ve yanlış sekmelerden daha beter. Bu görsel stüdyo uzantısını https://visualstudiogallery.msdn.microsoft.com/ed812631-a7d3-4ca3-9f84-7efb240c7bb5 denedim ve tam olarak çalışmıyor gibi görünüyor. Buradaki herkesin gölgelendiricilerle çalışıp çalışmadığı ve bu sorunu çözmek için bildiği bir uzantıya sahip olup olmadığını merak ediyordum.Unity visual studio ile birlik gölgelendiricileri kodlama

+0

İyi bir çözüm olduğunu sanmıyorum. Ben de çok ilgilenirim. – Droppy

+0

Peki, şimdi boşluk sorunu için hızlı bir düzeltme buldum. Sekme seçeneğini Araçlar-> Seçenekler-> Metin Editörü-> Tüm Diller-> Sekmeler-> Engelleme Girintileri'nde değiştirdim ve boşluk sorununu düzeltiyor gibi görünüyordu, ancak yine de sorun için daha iyi bir çözüm bulmak isterdim. Ayrıca, bu sekme girintisini altından daha özel bir dil olup olmadığını bilen var mı, CG kodu için bir seçenek görmüyorum ve tüm dillerimi engellemek üzere girintileme sekmesini kullanmamayı tercih ediyorum. –

+0

Boşluğu düzelttiğimi sanıyordum, ama görünüşe göre bu ayarda bile hala bozuk. –

cevap

1

eklentisi sorunu çözmelidir O:

ShaderlabVS

It Visual Studio 2013 destekler ve 2015 2017 test aşamasında üzerindedir.

1

i bassicly shader kullandı:

http://wiki.unity3d.com/index.php/Silhouette-Outlined_Diffuse

bilgi ile

"Yalnızca Anahat" diyor bölümü: "Burada hile yok olan şey "" Zero One Blend Nesnemizi bütünüyle ön plana çıkarmak ve sadece hedef rengi kullanmak (nesnenin arkasında ne varsa). Aslında, nesnenin kendisi görünmezdir, ancak hala taslağın kendisini ortaya çıkarmasına izin veririz. sadece anahat. "

Öncelikle bir gölgelendirici komut dosyası hazırlamanız ve size uygun bir yere yerleştirmeniz gerekir. Bunu her zaman klasör gölgelendiricilerine yerleştiririm.

Bu kod sitede esas olarak yazılıdır, ancak daha kolay bir hale getirebilmek için buraya yapıştırmam gerekecek. Kodu okuduğunuzdan, Unity'nin kodundan veya müfettişinden kolayca kolayca düzenleyebileceğinizden emin olun. oluşturulan shaderscript için vesile kodu:

Shader "Outlined/Silhouette Only" { 
    Properties { 
     _OutlineColor ("Outline Color", Color) = (0,0,0,1) 
     _Outline ("Outline width", Range (0.0, 0.03)) = .005 
    } 

CGINCLUDE 
#include "UnityCG.cginc" 

struct appdata { 
    float4 vertex : POSITION; 
    float3 normal : NORMAL; 
}; 

struct v2f { 
    float4 pos : POSITION; 
    float4 color : COLOR; 
}; 

uniform float _Outline; 
uniform float4 _OutlineColor; 

v2f vert(appdata v) { 
    // just make a copy of incoming vertex data but scaled according to normal direction 
    v2f o; 
    o.pos = mul(UNITY_MATRIX_MVP, v.vertex); 

    float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); 
    float2 offset = TransformViewToProjection(norm.xy); 

    o.pos.xy += offset * o.pos.z * _Outline; 
    o.color = _OutlineColor; 
    return o; 
} 
ENDCG 

    SubShader { 
     Tags { "Queue" = "Transparent" } 

     Pass { 
      Name "BASE" 
      Cull Back 
      Blend Zero One 

      // uncomment this to hide inner details: 
      //Offset -8, -8 

      SetTexture [_OutlineColor] { 
       ConstantColor (0,0,0,0) 
       Combine constant 
      } 
     } 

     // note that a vertex shader is specified here but its using the one above 
     Pass { 
      Name "OUTLINE" 
      Tags { "LightMode" = "Always" } 
      Cull Front 

      // you can choose what kind of blending mode you want for the outline 
      //Blend SrcAlpha OneMinusSrcAlpha // Normal 
      //Blend One One // Additive 
      Blend One OneMinusDstColor // Soft Additive 
      //Blend DstColor Zero // Multiplicative 
      //Blend DstColor SrcColor // 2x Multiplicative 

CGPROGRAM 
#pragma vertex vert 
#pragma fragment frag 

half4 frag(v2f i) :COLOR { 
    return i.color; 
} 
ENDCG 
     } 


    } 

    Fallback "Diffuse" 
} 

Not; Bana ne türden shader yapmayı planladığını söyleyebilir misin?