NOVA Shader: Particle System용 범용 셰이더
요약
NOVA Shader는 Unity의 Universal Render Pipeline (URP)을 지원하는 범용 Particle System 셰이더입니다. Flow Map, Dissolve, Flip-Book 등 다양한 시각 효과 기능을 구현하여 고품질의 이펙트를 효율적으로 제작할 수 있도록 돕습니다.
핵심 포인트
- Unity URP 기반의 범용 파티클 시스템 셰이더입니다.
- Flow Map, Dissolve, Flip-Book 등 다채로운 VFX 기능 제공.
- 고품질 시각 효과를 효율적으로 구현하는 데 초점을 맞췄습니다.
NOVA Shader: Particle System용 범용 셰이더
문서 (Docs) (English, 日本語)
| 샘플 (Samples) (English, 日本語) |
| 데모 (Demo) (English, 日本語) |
NOVA Shader는 Universal Render Pipeline (URP)을 지원하는 Particle System용 다기능 셰이더입니다.
시각 효과(visual effects)에 일반적으로 사용되는 범용 함수들이 구현되어 있어 고품질의 효과를 효율적으로 만들 수 있습니다.
Flow Map, Flip-Book (순차적인 텍스처 애니메이션), Dissolve, Fade, Rotation, Animated Tint Map, Emission, Distortion 등 독특한 기능들을 구현했습니다.
<p align="center"> <img width="70%" src="https://user-images.githubusercontent.com/47441314/143531706-7f0230bb-4e4f-41de-9dbf-1586f295225c.gif" alt="Features"><br> <font color="grey">기능 (Features)</a </p>더 자세한 정보는 다음 문서인 Samples와 Demo를 참조해 주십시오.
목차
<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <details> <summary>목차</summary>- 설정
- 사용법
- Uber Unlit Shader
- Uber Lit Shader
- Distortion Shader
- Uber Unlit/Lit shaders( for uGUI )
- 그림자 캐스터 중단 (Abort Shadow Caster)
- 사용자 정의 버텍스 스트림과 함께 사용하기 (Use with the Custom Vertex Streams)
- 메시 GPU 인스턴싱 사용하기 (Use Mesh GPU Instancing)
- 사용자 정의 버텍스 스트림 자동 설정 (Automatic set up the Custom Vertex Streams).
설정
요구 사항
이 라이브러리는 다음 환경과 호환됩니다.
- Unity 2022.3 LTS 이상
- Universal Render Pipeline
- Shader Model 3.5
Mesh GPU Instancing를 사용하려면 Shader Model 4.5가 필요하다는 점에 유의하십시오. 또한, Mirror Sampling을 사용하려면 하드웨어가 Inline Sampler States를 지원해야 합니다. 그리고 3D Texture 또는 2D Texture Array를 사용하는 경우, 압축 형식은 이를 지원해야 합니다.
또한 이 문서는 이미 Universal Render Pipeline을 설정했다고 가정합니다. Universal Render Pipeline에 대한 자세한 정보는 Unity Manual을 참조하십시오.
설치
소프트웨어를 설치하려면 다음 단계를 따르십시오.
Window > Package Manager에서 패키지 관리자(Package Manager)를 엽니다.+버튼 >Add package from git URL을 선택합니다.- 다음 주소를 입력합니다:
또는 Packages/manifest.json을 열고 dependencies 블록에 다음 내용을 추가합니다.
만약 대상 버전을 설정하고 싶다면 다음과 같이 작성하세요.
No 'git' executable was found. Please install Git on your system and restart Unity와 같은 메시지가 나타나면, 시스템에 Git을 설치하고 Unity를 재시작해야 합니다.
버전을 업데이트하려면 위에서 설명한 대로 버전을 다시 작성하세요. 만약 특정 버전을 지정하고 싶지 않다면, package-lock.json 파일에서 이 라이브러리의 해시(hash)를 편집하여 버전도 업데이트할 수 있습니다.
{
"dependencies": {
"jp.co.cyberagent.nova": {
...
사용법 (Usage)
렌더러 기능 추가 (Add Renderer Feature)
먼저, 왜곡(Distortion)을 적용하기 위해 Renderer Feature를 설정해야 합니다.
ForwardRendererData 에셋의 Inspector 하단에서 Add Renderer Feature > Screen Space Distortion 을 클릭하세요.
아래와 같이 Screen Space Distortion이 추가되었는지 확인하세요.
<p align="center"> <img width="60%" src="https://user-images.githubusercontent.com/47441314/195064556-c9192bbc-7a82-4726-98dc-ef3a878d7b63.png" alt="Screen Space Distortion"><br> <font color="grey">Screen Space Distortion</font> </p>참고 (Note)
왜곡 셰이더(Distortion Shader)를 사용하지 않는 경우 이 설정은 필요하지 않습니다.
깊이 텍스처 활성화 (Activate Depth Texture)
다음으로, Soft Particles 또는 Depth Fade 기능을 사용하려면 Depth Texture를 활성화하세요.
UniversalRenderPipelineAsset Inspector에서 Depth Texture에 체크 표시를 하세요.
Depth Texture 설정은 각 Camera에서도 찾을 수 있으므로 필요한 대로 설정하세요.
참고
이 설정은 Soft Particles나 Depth Fade를 사용하지 않는 경우 필요하지 않습니다.
Material 생성 및 할당하기
다음으로, Nova 셰이더를 사용하여 머티리얼을 만드세요.
머티리얼을 생성하고 셰이더를 Nova/Particles/UberUnlit로 설정한 다음 Base Map에 텍스처를 할당하세요.
파티클 시스템을 생성하고 이 머티리얼을 할당하면, 지정된 텍스처를 가진 파티클이 보이는 것을 확인할 수 있습니다.
<p align="center"> <img width="60%" src="https://user-images.githubusercontent.com/47441314/195067160-2235ee34-3fcd-47a0-b6e2-8b1595aeb994.png" alt="Particle"><br> <font color="grey">Particle</font> </p>각 셰이더와 각 기능에 대한 자세한 정보는 아래 섹션을 참조하세요.
Uber Unlit Shader
Uber Unlit 셰이더는 조명이 적용되지 않은 다기능 셰이더입니다.
조명 효과가 필요 없는, 예를 들어 빛나는(glowing) 효과의 파티클에 이 셰이더를 사용하세요.
이 셰이더를 사용하려면 Nova/Particles/UberUnlit 셰이더를 머티리얼에 할당하세요. 다음은 Inspector에서 설정할 수 있는 각 속성의 설명입니다.
Render Settings
Render Settings는 머티리얼이 어떻게 렌더링되는지를 제어합니다.
<p align="center"> <img width="60%" src="https://raw.githubusercontent.com/CyberAgentGameEntertainment/NovaShader/HEAD/Documentation~/Images/unlit_rendersettings_01.png" alt="Render Settings"><br> <font color="grey">Render Settings</font> </p> <table> <thead> <tr><td colspan="3"><b>속성 이름 (Property Name)</b></td><td class="description"><b>설명 (Description)</b></td></tr> </thead> <tbody> <tr><td colspan="3"><b>렌더 타입 (Render Type)</b></td><td> <p>다음 옵션 중에서 렌더링 타입을 지정할 수 있습니다.</p> <p> <ul> <li>Opaque</li> <li>Cutout</li> <li>Transparent (기본값)</li> </ul> </p> <p>Cutout을 선택하면 CutOff 속성이 표시됩니다. Transparent를 선택하면 Blend Mode 속성이 표시됩니다.</p> </td></tr> <tr><td></td><td colspan="2"><b>CutOff</b></td><td> <p><b>이 속성은 렌더 타입이 Cutout으로 설정되었을 때만 보입니다.</b></p> <p>반투명 영역을 클리핑하는 임계값을 제어합니다. 이 값이 높을수록 더 많은 알파가 잘려 나갑니다.</p> </td></tr> <tr><td></td><td colspan="2"><b>블렌드 모드 (Blend Mode)</b></td><td> <p><b>이 속성은 렌더 타입이 Transparent로 설정되었을 때만 보입니다.</b></p> <p>다음 옵션 중에서 색상 블렌딩 방식을 지정할 수 있습니다.</p> <p> <ul> <li>Alpha (알파 블렌딩 / 기본값)</li> <li>Average</li> <li>Multiply</li> </ul> </p> </td></tr> <tr><td colspan="3"><b>렌더 면 (Render Face)</b></td><td> <p>다음 옵션 중에서 렌더링 면을 지정할 수 있습니다.</p> <p> <ul> <li>Front (기본값)</li> <li>Back</li> <li>Both</li> </ul> </p> </td></tr> <tr><td colspan="3"><b>렌더 우선순위 (Render Priority)</b></td><td> <p>렌더 타입이 같을 경우, 렌더 우선순위가 낮은 것이 먼저 그려집니다.</p> </td></tr> <tr><td colspan="3"><b>버텍스 알파 모드 (Vertex Alpha Mode)</b></td><td> <p>다음 옵션 중에서 버텍스 색상의 알파 값을 사용하는 방법을 지정할 수 있습니다.</p> <p> <ul> <li>Alpha: 알파 값으로 사용 (기본값).</li> <li>Transition Progress: 알파 전환 함수에 진행률(Progress)로 사용 (아래 참조).</li> </ul> </p> </td></tr> <tr><td colspan="3"><b>ZWrite</b></td><td> <p>ZWrite 값을 설정할 수 있습니다.</p> <p> <ul> <li>Auto: 렌더 타입이 Transparent로 설정되면 ZWrite가 비활성화되고, 다른 값으로 설정되면 활성화됩니다.</li> </ul> </p> </td></tr> </li> <li>Off: ZWrite는 항상 비활성화됩니다.</li> <li>On: ZWrite는 항상 활성화됩니다.</li> </ul> </p> </td></tr> <tr><td colspan="3"><b>ZTest</b></td><td class="col-md-4"> <p> ZTest 값을 설정할 수 있습니다. </p> <p> <ul> <li>Disabled</li> <li>Never</li> <li>Less</li> <li>Equal</li> <li>Less Equal (기본값)</li> <li>Greater</li> <li>Not Equal</li> <li>Greater Equal</li> <li>Always</li> </ul> </p> </td></tr> </tbody> </table>Vertex Deformation
Vertex Deformation을 사용하면 버텍스(vertices)의 변형을 제어할 수 있습니다.
<p align="center"> <img width="60%" src="https://raw.githubusercontent.com/CyberAgentGameEntertainment/NovaShader/HEAD/Documentation~/Images/vertex_deformation.png" alt="Vertex Deformation"><br> <font color="grey">Vertex Deformation</font> </p>AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기