2016-07-29 43 views
11

최근에 저는 비주얼 스튜디오에서 쉐이더를 코딩하기 위해 쉐이더를 코딩했습니다. 유니티 쉐이더는 유니티의 셰이더 랩 언어와 CG의 조합으로 작성 되었기 때문에 visual studio 2015는 그렇지 않습니다. 언어를 인식하는 것 같습니다. 이 때문에 Visual Studio에서는 키워드를 다시 지정하지 않고 인텔리 센스가 없으며 Enter 키를 누를 때마다 새 탭으로 이동할 때마다 모든 탭이 잘못 표시됩니다. 이 Visual Studio 확장자 https://visualstudiogallery.msdn.microsoft.com/ed812631-a7d3-4ca3-9f84-7efb240c7bb5을 사용해 보았지만 완전히 작동하지 않는 것 같습니다. 여기에있는 누군가가 셰이더 작업 경험이 있고이 문제를 해결하기 위해 알고있는 확장 기능이 있는지 궁금합니다.유니티 비주얼 스튜디오로 유니티 쉐이더 코딩하기

+0

나는 좋은 해결책이 있다고 생각하지 않는다. 나는 또한 매우 흥미가있을 것이다. – Droppy

+0

글쎄, 난 그냥 간격 문제에 대한 하나의 빠른 수정 발견. 도구 -> 옵션 -> 텍스트 편집기 -> 모든 언어 -> 탭 -> 들여 쓰기를 차단하도록 탭 옵션을 전환했는데이 문제는 간격 문제를 수정하는 것처럼 보였지만 여전히 문제에 대한 더 나은 해결책을 찾고 싶습니다. 또한이 탭 아래에 들여 쓰기 옵션을 넣을 수있는보다 구체적인 언어가 있다면 누구나 알고 있습니다. CG 코드 옵션이 보이지 않으며 모든 언어에서 탭 들여 쓰기 설정이 필요하지 않습니다. –

+0

나는이 간격을 고쳤다 고 생각했지만이 설정으로도 여전히 깨졌습니다. –

답변

1

플러그인 문제 해결해야 :

ShaderlabVS

그건 비주얼 스튜디오 2013 지원하며, 2015 년 2017은 테스트 단계에있다.

1

내가 bassicly 쉐이더이 사용 :

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

설명과

"단지 개요"라는 부분 : "여기에 트릭을 수행 인 것은" "제로 원을 혼합 실제로 오브젝트를 렌더링하지 않고 대상 컬러 만 사용하는 것입니다. 즉, 오브젝트 자체는 보이지 않지만 실제로는 윤곽선이 렌더링되도록합니다. 그래서 우리는 다음과 같이 남겨 둡니다. 개요 만. "

먼저 셰이더 스크립트를 만들어 어딘가에 배치해야합니다. 항상 폴더 셰이더에 배치해야합니다.

코드가 사이트에 기본 적으로 있지만 쉽게 만들 수 있도록 여기에 붙여 넣습니다. 이 코드를 읽으려면 Unity의 코드 또는 관리자에서이 코드를 쉽게 편집 할 수 있어야합니다. 생성 된 shaderscript에 대한 저작물 코드 :

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" 
} 

P.S. 어떤 종류의 쉐이더를 목표로하고 있는지 말해 줄 수 있습니까?