본문 바로가기
개발/Unity

Unity) 컷아웃 마스크(Cutout Mask / Reverse Mask)

by 테샤르 2023. 12. 6.

컷아웃 마스크(Cutout Mask / Reverse Mask)

Unity 에서 특정한 곳만 보이도록 처리하기 위해서 찾다가 발견한 코드로 간단하게 포스팅한다.

Mask의 기능을 활용해서 특정 영역을 기준으로 마스크 처리되는 효과이다.

 

원본 링크: [링크]

 

 

반응형

 

< CutoutMaskUI.cs >

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Rendering;
using System.Collections;

public class CutoutMaskUI : Image
{
    protected override void Start()
    {
        base.Start();
        StartCoroutine(Fix());
    }

    private IEnumerator Fix()
    {
        yield return null;
        maskable = false;
        maskable = true;
    }

    public override Material materialForRendering
    {
        
        get
        {
            Material material = new Material(base.materialForRendering);
            material.SetInt("_StencilComp", (int)CompareFunction.NotEqual);
            return material;
        }
    }
}

 

< 설명 >

CompareFunction.NotEqual
  Pass depth or stencil test when new value is greater or equal than current value.

 

Image를 상속받은 해당 스크립트(CutoutMaskUI.cs)에서 스탠실 값을 변경해서 처리하는 간단한 코드이다.

반응형

 

< Hierarhcy 구성 >

<Mask Compopent>

 

< CutoutMaskUI  Compopent >

 

Unity Stencil : [링크]

 

Unity - Manual: ShaderLab command: Stencil

ShaderLab command: Offset ShaderLab command: UsePass ShaderLab command: Stencil Configures settings relating to the stencil bufferA memory store that holds an 8-bit per-pixel value. In Unity, you can use a stencil buffer to flag pixels, and then only rende

docs.unity3d.com

 

★☆☆☆☆

 

반응형

댓글