최근에 저는 비주얼 스튜디오에서 쉐이더를 코딩하기 위해 쉐이더를 코딩했습니다. 유니티 쉐이더는 유니티의 셰이더 랩 언어와 CG의 조합으로 작성 되었기 때문에 visual studio 2015는 그렇지 않습니다. 언어를 인식하는 것 같습니다. 이 때문에 Visual Studio에서는 키워드를 다시 지정하지 않고 인텔리 센스가 없으며 Enter 키를 누를 때마다 새 탭으로 이동할 때마다 모든 탭이 잘못 표시됩니다. 이 Visual Studio 확장자 https://visualstudiogallery.msdn.microsoft.com/ed812631-a7d3-4ca3-9f84-7efb240c7bb5을 사용해 보았지만 완전히 작동하지 않는 것 같습니다. 여기에있는 누군가가 셰이더 작업 경험이 있고이 문제를 해결하기 위해 알고있는 확장 기능이 있는지 궁금합니다.유니티 비주얼 스튜디오로 유니티 쉐이더 코딩하기
11
A
답변
1
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. 어떤 종류의 쉐이더를 목표로하고 있는지 말해 줄 수 있습니까?
나는 좋은 해결책이 있다고 생각하지 않는다. 나는 또한 매우 흥미가있을 것이다. – Droppy
글쎄, 난 그냥 간격 문제에 대한 하나의 빠른 수정 발견. 도구 -> 옵션 -> 텍스트 편집기 -> 모든 언어 -> 탭 -> 들여 쓰기를 차단하도록 탭 옵션을 전환했는데이 문제는 간격 문제를 수정하는 것처럼 보였지만 여전히 문제에 대한 더 나은 해결책을 찾고 싶습니다. 또한이 탭 아래에 들여 쓰기 옵션을 넣을 수있는보다 구체적인 언어가 있다면 누구나 알고 있습니다. CG 코드 옵션이 보이지 않으며 모든 언어에서 탭 들여 쓰기 설정이 필요하지 않습니다. –
나는이 간격을 고쳤다 고 생각했지만이 설정으로도 여전히 깨졌습니다. –