728x90
반응형
마스크 오브젝트를 다뤄보겠습니다.
여기서 제가 말한 컬링 오브젝트는 해당 오브젝트는 투명하며 이 오브젝트 뒤에 있는
타겟 오브젝트와 겹치면 겹친 만큼 가려지게 하려는 것입니다.
먼저 필요한 것은 쉐이더와 스크립트 하나인데
먼저 쉐이더는 아래
Shader "Masked/Mask" {
SubShader{
// Render the mask after regular geometry, but before masked geometry and
// transparent things.
Tags {"Queue" = "Geometry+10" }
// Don't draw in the RGBA channels; just the depth buffer
ColorMask 0
ZWrite On
// Do nothing specific in the pass:
Pass {}
}
}
그리고 스크립트
using UnityEngine;
[AddComponentMenu("Rendering/SetRenderQueue")]
public class SetRenderQueue : MonoBehaviour
{
[SerializeField]
protected int[] m_queues = new int[] { 3000 };
protected void Awake()
{
Material[] materials = GetComponent<Renderer>().materials;
for (int i = 0; i < materials.Length && i < m_queues.Length; ++i)
{
materials[i].renderQueue = m_queues[i];
}
}
}
준비물은 끝났고 오브젝트 두개를 만들었습니다
그리고 원(마스크 오브젝트)에 위에서 만든 쉐이더를 적용시켜주고
Render Queue - transparent 3000으로 설정해줍니다
그리고 정육면체에는 스크립트를 붙여주고 queue를 3200으로 설정해 줍니다
그리고 큐브에 새 메터리얼을 입혀주고 surface Type을 transparent로 설정해줍니다
그러면 아래와 같이 가려집니다
그리고 큐브의 큐와 컬링 마스크 큐를 조금 손보면
(마스크 오브젝트 큐 3070, 큐브의 Material - Priority = -23)
위와 같은 모습을 볼 수 있습니다.
위의 정보로 이것 저것 테스트 하시면서 하시면 아마 손쉽게 원하는 결과를 얻으실 겁니다
질문 사항이 있으시면 댓글로 물어봐주세요
728x90
반응형