티스토리 뷰
홀로렌즈 상황에서 UI 캔버스를 사용하면 오류난다.
그래서 얘네가 튜토리얼에서 UI를 어떻게 사용하였는지 봤더니
큐브나 쿼드, Mesh Text 를 활용해 사용한다는 것을 확인했다.
여러 문제사항을 정리해보고자 한다.
[목표]
음악 진행 사항에 맞춰 쿼드가 마스킹 되게 한다.
(UI canvas Image에 MASK를 활용하면 쉽게 되지만.. 3D 오브젝트를 사용해야하기 때문에 Shader 코드를 추가하여 해결했다.)
문제 1. 쿼트 뒷면 안 보임.
https://bloodstrawberry.tistory.com/760
2. 스텐실 쉐이더 CG programing 언어 script
>>>>마스킹 될 오브젝트
Shader "Custom/PortalOBJ_01"
{
Properties
{
_Color("COlor", Color) = (1,1,1,1)//흰색
[Enum(Equal,3,NotEqua,6)]_StencilTest("Stencil Test",int) = 6
}
SubShader
{
Color[_Color]
Stencil{
Ref 2
Comp[_StencilTest]
}
Pass
{
}
}
}
간단히 하면 이렇지만
나는 alpha 값을 가진 이미지를 오브젝트에 넣었기 때문에 아래의 코드처럼
약간 복잡해졌다 (+ texture + alpha + unlit)
: 기존의 유니티의 기본 쉐이터 unlit 코드를 활용했음.
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
// Unlit alpha-blended shader.
// - no lighting
// - no lightmap support
// - no per-material color
Shader "Custom/PortalOBJ_01"{
Properties {
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
[Enum(Equal,3,NotEqua,6)]_StencilTest("Stencil Test",int) = 6
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 100
cull off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Stencil{
Ref 2
Comp[_StencilTest]
}
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
half2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.texcoord);
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}
>>>마스킹하는 창
ader "Custom/PortalFilter_01"
{
SubShader
{
ZWrite off
ColorMask 0
Stencil{
Ref 2
Pass replace
}
Pass
{
}
}
}
참고
https://answers.unity.com/questions/1098744/unlit-texture-transparent-shader.html
https://learn.unity.com/tutorial/shaderlab-anatomy-of-a-shader#
쉐이더 다운받기
https://unity.com/releases/editor/archive
틴트도 추가했음
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
// Unlit alpha-blended shader.
// - no lighting
// - no lightmap support
// - no per-material color
Shader "Custom/PortalOBJ_01"{
Properties{
_Color ("Color Tint", Color) = (1,1,1,1)
_MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
[Enum(Equal,3,NotEqua,6)]_StencilTest("Stencil Test",int) = 6
}
SubShader{
Tags {"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
LOD 100
cull off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Stencil{
Ref 2
Comp[_StencilTest]
}
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
half2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
};
sampler2D _MainTex;
float4 _MainTex_ST;
//add tinit color
fixed4 _Color;
v2f vert(appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
//color tint add
fixed4 col = tex2D(_MainTex, i.texcoord) * _Color;;
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}
//
//Shader "Custom/PortalOBJ_01"
//{
// Properties
// {
// _MainTex("Texture", 2D) = "white" {}
// //_Color("COlor", Color) = (1,1,1,1)//흰색
// _Alpha ("Alpha", range(0.0,1.0)) = 1.0
// [Enum(Equal,3,NotEqua,6)]_StencilTest("Stencil Test",int) = 6
// }
// SubShader
// {
// Tags
// {
// "RenderType" = "Transparent"
// "Queue"= "Transparent"
// }
// //Color[_Color]
// float2 uv_MainTex :
// Stencil{
// Ref 2
// Comp[_StencilTest]
//
// }
//
// Pass
// {
//
// }
// }
//}
https://forum.unity.com/threads/adding-a-color-tint-to-unlit-transparent-shader.261712/
'Unity' 카테고리의 다른 글
VR_unity _ setting _ oculus quest2 (0) | 2023.01.16 |
---|---|
Unity_ animation _trigger (0) | 2022.12.14 |
Unity_ TD_ osc 통신_VFXgraph:scrip (0) | 2022.11.14 |
unity_ 타임라인 영상 기록 추출 (0) | 2022.11.11 |
unity_TD_udp통신 (0) | 2022.11.07 |
- Total
- Today
- Yesterday
- VR
- Java
- StableDiffusion
- motor controll
- Python
- MQTT
- node.js
- docker
- RNN
- colab
- AI
- sequelize
- ardity
- 유니티
- DeepLeaning
- Arduino
- Express
- opencv
- emotive eeg
- Unity
- 후디니
- houdini
- three.js
- 라즈베리파이
- 유니티플러그인
- CNC
- unity 360
- TouchDesigner
- JacobianMatrices
- oculuspro
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |