반응형
유니티 버전 : 2020.3.25f1(URP)
작업환경 : Mac (Monterey 12.2.1)
이번엔 외곽선을 구현하는 방법에 대해서 알아봤습니다.
유튜브에 정말 친절히 나와있더군요.. 유니티 에셋스토어를 이용해도 되지만 URP는 거의 유료라서... 따라서 만들어보기로 했습니다.
유튜브 영상은 아래 주소를 확인하시면 됩니다
https://www.youtube.com/watch?v=X-kaX_8bYRc
Create → Shader → Unlit Shader Graph 를 눌러 shader graph를 생성합니다. 이름은 OutlineShader로 합니다
Shader Node 는 다음과 같이 작성합니다.
ProPerties를 추가해야하는데 다음과 같이 추가해 줍니다.
쉐이더 그래프를 새로 생성한 Material에 넣고 OutlineScript.cs스크립트를 작성합니다.
OutlineScript.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class OutlineScript : MonoBehaviour
{
[SerializeField] private Material outlineMaterial;
[SerializeField] private float outlineScaleFactor;
[SerializeField] private Color outlineColor;
private Renderer outlineRenderer;
void Start()
{
outlineRenderer = CreateOutline(outlineMaterial, outlineScaleFactor, outlineColor);
outlineRenderer.enabled = true;
}
Renderer CreateOutline(Material outlineMat, float scaleFactor, Color color)
{
GameObject outlineObject = Instantiate(this.gameObject, transform.position, transform.rotation, transform);
Renderer rend = outlineObject.GetComponent<Renderer>();
rend.material = outlineMat;
rend.material.SetColor("_OutlineColor", color);
rend.material.SetFloat("_Scale", scaleFactor);
rend.shadowCastingMode = ShadowCastingMode.Off;
outlineObject.GetComponent<OutlineScript>().enabled = false;
outlineObject.GetComponent<Collider>().enabled = false;
rend.enabled = false;
return rend;
}
}
작성한 스크립트를 원하는 오브젝트에 추가하시고 Material과 scale값을 추가해주면 다음과 같이 나타납니다.
# 추가로 Shader Graph를 수정했는데 적용(저장)이 안되서 찾아봤는데 Save Asset을 해야한다고 합니다. Save Asset의 위치는 Shader Graph왼쪽 상단에 위치합니다.
위 내용을 파일로 첨부해 드립니다. 실행시켰을 때 Material이 에러(분홍색)으로 된다면 Shader를 다시 넣어주시면 됩니다.
반응형
'유니티 > URP-Shader' 카테고리의 다른 글
Unity(URP) UV_Scroll Shader (0) | 2022.05.16 |
---|---|
유니티+블렌더 크리스탈 만들기 (0) | 2022.05.03 |
유니티 URP - Plane Reflection (0) | 2022.04.19 |