Skip to content
Home » 유니티 셰이더 그래프 | 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’ 빠른 답변

유니티 셰이더 그래프 | 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’ 빠른 답변

당신은 주제를 찾고 있습니까 “유니티 셰이더 그래프 – 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 고라니TV – 게임개발 채널 이(가) 작성한 기사에는 조회수 88,392회 및 좋아요 2,880개 개의 좋아요가 있습니다.

Table of Contents

유니티 셰이더 그래프 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’ – 유니티 셰이더 그래프 주제에 대한 세부정보를 참조하세요

이 영상만 보면 왕초보자도 고수가 됩니다
2개월 간 셰이더 이 한 분야만 연구하였습니다
셰이더에 대해 가장 깊고도 쉽게 다루며, 수학적 지식 또한 풀어서 썼습니다
URP Shader Graph의 모든 노드에 대해 설명하며 예제들도 다룹니다
백과사전처럼 잊어버리면 보는 영상으로 남길 바랍니다
‘프로그래머가 셰이더를 이해하면 놀라운 일이 생깁니다’

# CC0 텍스쳐
https://cc0textures.com/
# 노멀맵 만들기
http://www.smart-page.net/smartnormal/
# 셰이더 그래프 메뉴얼 공용 홈페이지
https://docs.unity3d.com/Packages/[email protected]/manual/index.html
# 삼각함수 그래프
https://www.desmos.com/calculator/w9jrdpvsmk
# 프로젝트 다운로드
https://drive.google.com/file/d/1qvzhshTBSCwHbE4e4xum-ysf3InAMN6Q/view?usp=sharing

유니티 셰이더 그래프 주제에 대한 자세한 내용은 여기를 참조하세요.

셰이더 그래프 – Unity

2D 및 3D 게임에 들어갈 뛰어난 비주얼을 구현할 수 있는 Unity 셰이더 그래프의 여러 가지 기능에 대해 알아보세요.

+ 자세한 내용은 여기를 클릭하십시오

Source: unity.com

Date Published: 7/5/2021

View: 7132

셰이더 그래프 – Unity 매뉴얼

셰이더 그래프 패키지는 Unity에 시각적 셰이더 편집 툴을 추가합니다. 이 툴을 사용하여 코드를 작성하는 대신 시각적인 방식으로 셰이더를 만들 수 있습니다.

+ 여기를 클릭

Source: docs.unity3d.com

Date Published: 7/25/2021

View: 3410

유니티 셰이더 그래프 예제 01 포스필드 구현해보기, Unity …

유니티 셰이더 그래프 예제 01 포스필드 구현해보기, Unity ShaderGraph ForceField 한동안 그래픽스 작업을 안하다, 최근 필요성이 조금 생겨서 …

+ 여기에 더 보기

Source: gdev.tistory.com

Date Published: 11/19/2021

View: 7969

유니티) 셰이더 그래프를 공부해보자! Shader Graph -1 – 가자몬

유니티) 셰이더 그래프를 공부해보자! Shader Graph -1 · 1. Window > package manager> Packages: Unity resistry에서 universal RP를 찾아 인스톨 (RP …

+ 여기에 보기

Source: gazam.tistory.com

Date Published: 12/15/2022

View: 1962

[엔진심화] 02. 셰이더그래프 – 베개발

셰이더그래프 소개 · 1. 셰이더그래프. https://unity.com/kr/shader-graph. 셰이더그래프는 노드 형식으로, 코드 없이 직관적으로 셰이더를 만들 수 있는 …

+ 여기에 보기

Source: rusalgames.tistory.com

Date Published: 7/5/2021

View: 705

(셰이더 그래프/HLSL)아티스트를 위한 URP 셰이더 Shader #1

셰이더 만들기. 유니티 빈 화면에 공 하나 만드시고요. Project 창에서 + 키를 누르고 Shader / Universal Render Pipelint/ Unlit Shader Graph 를 …

+ 자세한 내용은 여기를 클릭하십시오

Source: chulin28ho.tistory.com

Date Published: 6/28/2022

View: 6412

셰이더 그래프 시작하기 (Creating a new Shader Graph Asset )

즉 고화질 렌더 파이프라인(HDRP) 및 범용 렌더 파이프라인(URP)과만 호환됩니다. 이 두 SRP는 Unity 2018.1 이상에서 사용할 수 있습니다. 레거시 내장 …

+ 자세한 내용은 여기를 클릭하십시오

Source: smilejsu.tistory.com

Date Published: 3/16/2021

View: 5691

Shader Graph 01 – 블로그 – 네이버

URP 13개의 글 … Shader Graph란? … 유니티 엔진 버전 2019.3 이상부터 지원되는 노드를 기반으로 쉐이더 빌드를 할 수 있게 해주는 기능입니다. 노드 …

+ 여기에 더 보기

Source: blog.naver.com

Date Published: 2/21/2022

View: 583

주제와 관련된 이미지 유니티 셰이더 그래프

주제와 관련된 더 많은 사진을 참조하십시오 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

기적의 셰이더 그래프 '어떤 노드든 이해시켜 드립니다'
기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’

주제에 대한 기사 평가 유니티 셰이더 그래프

  • Author: 고라니TV – 게임개발 채널
  • Views: 조회수 88,392회
  • Likes: 좋아요 2,880개
  • Date Published: 2020. 1. 25.
  • Video Url link: https://www.youtube.com/watch?v=KnueAgpUL3Y

Unity 매뉴얼

스크립터블 빌드 파이프라인 테스트 프레임워크

셰이더 그래프

com.unity.shadergraph

설명

셰이더 그래프 패키지는 Unity에 시각적 셰이더 편집 툴을 추가합니다. 이 툴을 사용하여 코드를 작성하는 대신 시각적인 방식으로 셰이더를 만들 수 있습니다. 특정 렌더 파이프라인은 특정 그래프 기능을 구현할 수 있으며, 고해상도 렌더 파이프라인과 유니버설 렌더 파이프라인 모두 셰이더 그래프를 지원합니다.

버전 정보

Unity 인증

Package version 10.5.1 is verified for Unity Editor version 2020.3.

Unity와의 호환성

These package versions are available in Unity version 2020.3:

문서 위치: 상태 이용 가능 버전: [email protected] 호환 가능 10.6.0 [email protected] 검증됨 10.5.1

유니티 셰이더 그래프 예제 01 포스필드 구현해보기, Unity ShaderGraph ForceField

유니티 셰이더 그래프 예제 01 포스필드 구현해보기, Unity ShaderGraph ForceField

한동안 그래픽스 작업을 안하다, 최근 필요성이 조금 생겨서

유니티에서 쉐이더를 맛을 좀 보려 했는데, 너무 많이 떠나 있다 복귀를 해서

ShaderGraph 란 녀석을 이제 좀 이것저것 만져보려 합니다.

그래서 만져보면서 공부한 내용도 좀 정리해 두려구합니다.

일단 제가 작업한 환경은

2021.1

그리고 또 선제조건으로는

세이더 그래프를 이용하기 위해선 프로젝트 생성 시,

아래 둘중 선택이 필요

High Definition RP나 Universal RP를 선택해주셔야 합니다.

Universal 버전이 라이트하고, HD 버전이 U 버전에 비해 +된 노트가 있는 걸로 알고 있습니다.

세이더 그래프를 이용해야 된다는 여러 이유 중에서는,

버전 관리, 유니티 업그레이드 호환성에 있어 쉐이더 그래프로 제작한 쉐이더는 호환가능성이 높지만, HLSL 코드 기준으로는 많은 문제가 있다고 합니다. 흠.. 일단 그렇게 들었습니다.

일단 만들어 봅시다.

Project 에서 마우스 우클릭

Create>> Shader >> Universal RP >> Lit Sahder Graph 를 선택합니다.

Lit Sahder Graph

이름은 적당히 원하는 걸로 해주세요.

적당히 주어둔 택스쳐 한장을 이용해 보겠습니다. 적용

surface Transparent 로 변경

노드의 구성

Time은 택스쳐가 흐르는 효과를 주기 위해 존재

Tiling and offset은 텍스처를 넓게 사용하기 위해 존재

1번을 조절해 보면 어떤 의미인지 알 수 있다.

Samlpe Texture 2d는 텍스처를 불려 온다. 2번에 위의 파일을 연결시켜준다.

그리고 결과물을 Alpha에 넣어준다.

결과물, 아주 불만족

FX적인 요소가 강력하기 자체에서 빛이 나게 설정하며 칼라를 잡아주자,

Emission 조절

적당히 원하는 색상, Intensity의 조절

그리고 회전이 너무 빠른 느낌도 문제이다. 요것 조 조절하자.

이동량 제어

시간에 0.3을 곱하게 만들어 이동량을 줄였다.

먼가 좀 나아진 상태

마지막으로 중앙은 좀 더 투명도가 높고 외각이 표현도가 높았으면 해서

Fresnel을 적용해본다.

작업

Fresnel Effect를 추가하고, 이전 Alpha의 결괏값과 곱한다. 그리고 곱한 결과를 Alpha에 넣어준다.

Fresnel x값은 변경해보면서 효과를 확인한다.

흐음..

쉐이더 그래프 써볼 만한 물건 같다.

하나하나 만들어 보려 한다.

봐주셔서 감사합니다.

유니티) 셰이더 그래프를 공부해보자! Shader Graph -1

728×90

반응형

유니티에서 이펙트 등 여러가지 시각적 효과를 만들기 위해서 가장 중요하고 어려운 개념인

셰이더 그래프를 공부해보려고 합니다.

아무래도 프로그래밍쪽에 거의 무지한 상태라서 이해하는 데 남들보다 더 오래 걸릴 것 같습니다, 하지만

코딩에 대한 개념과 유니티의 심화과정을 함께 공부한다고 생각하고 접근해 볼 예정입니다 🙂

그럼, 완전 기초부터 시작 해볼게요!

먼저 유니티 허브에서 프로젝트 생성시

URP(Universal Render Pipeline) 또는 High Definition RP로 만들어줘야 셰이더 그래프를 만들 수 있습니다!

HDRP는 이름에서 알수있듯 High 높은 퀄리티의 렌더링을 하는 용도로 쓰이기 때문에

최적화를 위해서 유니버셜 렌더 파이프라인URP을 쓴다고 합니다.

그리고 셰이더 그래프에서 노드의 종류가 HDRP쪽에 더 많다고 하는데 아직은 모르는게 훨씬 더 많으니… 그 디테일 한 차이점은 나중에 알아보도록 합시다!

*참고)

2019이전 버전에서는 URP가 LWRP(Light weight)라는 이름으로 쓰였는데

기능은 동일하며, light라는 이름때문에 너무 낮은 퀄리티로 렌더링되는 게 아닌가 오해하는 분들이 생겨서

이름만 바꾼 것이라고 해요!

아무튼 가장 흔히 쓰이는 것이 URP라고 기억하면 될 것 같습니다.

여기에서

프로젝트를 다르게 여는 이유는,

위 캡쳐 이미지에서 보시다시피

3D에서 만들수 있는 셰이더와 URP에서 만들 수 있는 셰이더가 다릅니다.

빨간색 부분은 코딩으로 된 셰이더들이고, 노란색으로 체크되어 있는 부분이 URP와 HDRP에서만 만들 수 있는 셰이더 그래프인데,

3D프로젝트에서는 셰이더 그래프와 같은 비주얼 스크립팅이 불가능합니다.

물론 아예 불가능 한 건 아니고

3D에서 URP로 세팅을 바꾸는 방법이 있습니다.

1. Window > package manager> Packages: Unity resistry에서 universal RP를 찾아 인스톨 (RP검색으로 빨리 찾기)

2. edit > project setting > graphics

3. 프로젝트에서 creat > rendering > Universal rendering pipeline > pipeline asset

4. 3에서 생성된 에셋을 2의 파이프라인 세팅 (None)으로 되어있는 부분에 드래그 앤 드롭

5. edit > render pipeline > universal render pipeline > upgrade project meterials …

위 순서로 진행하면 똑같이 셰이더 그래프를 생성할 수 있게 됩니당

이미 3D 프로젝트에서 진행이 된 상태에서 셰이더 그래프가 필요할 때 이 방법을 사용하면 좋을 것같네용

셰이더 그래프 종류에 대해서 알아보면,

2D renderer

2D에서 빛에 반응하는 / 반응하지 않는 그래프를 만들 때

Unlit Graph

3D에서 빛에 반응하지 않는 그래프를 만들 때

PBR Graph⭐️

Physically based renderer (물리 기반 렌더링) 으로서, 현실 세계에 가장 가까운 그래프를 만들 때

VFX Shader Graph

파티클이 많은 그래프를 만들 때

Sub Graph

직접 만든 그래프(그룹해 둔 그래프 등)를 저장 해두고 쓸 때

이렇게 사용된다고 하는데요,

가장 많이 쓰이는 건 아무래도 현실 물리 기반인 PBR이 될 것 같네요!

참고한 유튜브!

youtu.be/KnueAgpUL3Y

고라니TV님의 무려 2시간짜리 영상인데, 엄청 도움이 많이 되는 영상입니당. 셰이더 공부를 하시려면 꼭 한번 보시는 걸 추천드려요

반응형

[엔진심화] 02. 셰이더그래프

■ 목차

셰이더그래프 소개

– 셰이더그래프

– 셰이더그래프 생성하기

– 기본 UI, 기능 설명

노드 다뤄보기

– Color

– Sample Texture 2D

– Multiply

– (Keyword) Boolean

– (Keyword) Enum

셰이더 그래프를 코드로 열어보기

간단한 예제 제작

– 옷 염색 기능 만들어보기

■ 셰이더그래프 소개

1. 셰이더그래프

https://unity.com/kr/shader-graph

셰이더그래프는 노드 형식으로, 코드 없이 직관적으로 셰이더를 만들 수 있는 기능이다.

셰이더그래프를 사용하기 위해서는 패키지 매니저에서 URP나 HDRP를 설치해야 한다.

2. 셰이더그래프 생성하기

셰이더그래프를 생성하려면 프로젝트 창에서 우클릭 후, Create > Shader > Universal Render Pipeline 으로 들어가준다.

이번에는 간단한 실습을 위해서 Lit Shader Graph 를 생성해준다.

(Lit은 빛의 영향을 받는 것, 반대로 Unlit은 빛의 영향을 받지 않는 것이라고 보면 된다.)

실수로 다른 걸 골랐더라도 노드 내에서 바꿔줄 수 있다.

3. 기본 UI 설명

생성된 셰이더그래프를 더블클릭해서 열어보면 이렇게 사진과 같이 구성되어있다.

하나씩 살펴보자.

마스터 스택

셰이더의 기본이 되는 부분이다. 버텍스 셰이더 부분과 Fragment 셰이더 부분이 있는데, 일단은 밑의 셰이더부터 먼저 다뤄보기로 한다.

크게 Base Color, Normal, Metalic, Smoothness, Emission, Ambient Occlusion이 있는데, 각각 간단하게 설명해보자면 다음과 같다.

Base Color: 기본이 되는 색상

Normal: 노멀 (노멀맵 할 때의 그 노멀)

Metalic: 금속인지 아닌지를 판단하는 부분

Smoothness: 표면의 매끄러운 정도

Emission: 발광 부분

Ambient Occlusion: 앰비언트 오클루전 (주변광으로 인해 생기는 그림자)

여기서 이 요소들을 마음대로 빼거나 다시 넣을 수 있다.

삭제

각각의 요소(베이스컬러에서 AO까지)를 우클릭하면 삭제할 수 있고,

Fragment 요소들이 들어있는 박스 맨 아래에 마우스를 갖다대면 파란 줄이 생기는데,

그걸 우클릭하면 요소들을 다시 추가할 수 있다.

* 마스터 스택은 기존 셰이더그래프의 마스터 노드와 같다.

Graph Inspector

셰이더그래프의 설정을 수정할 수 있는 창이다.

위 사진에서는 현재 Graph Setting, 즉 현재 그래프의 마스터 스택 설정을 다룰 수 있는 창이고,

바로 왼쪽의 Node Settings는 셰이더그래프 편집 공간 상에서 선택한 노드의 설정을 수정할 수 있는 창이다.

우선 텍스쳐, 컬러, Multiply(설명은 뒤에 가서 할 예정이다) 이렇게 3개 노드를 넣고 선택한 뒤

Graph Inspector의 Node Settings를 보면 저렇게 나온다.

각각의 노드들의 세부 설정을 바로 바꿔줄 수 있다.

* Shader Graph 10으로 바뀌면서 변경된 내용이라고 한다.

Blackboard

만들어 둔 노드들을 Property로 만들어서 저장해두고, 필요할 때 다시 꺼내 쓸 수 있는 기능이다.

여기에 저장해 둔 Property들은 해당 셰이더를 적용한 머테리얼의 인스펙터 창에서도 수정할 수 있다.

뿐만 아니라 외부에서 자유롭게 활용할 수 있다.

셰이더그래프에서 한 변수를 우클릭 후, Convert To > Property 를 누르거나, 혹은 드래그&드롭으로 블랙보드에 쉽게 추가할 수 있다.

셰이더그래프의 이름 아래에 회색으로 작게 보이는 글씨는 셰이더 카테고리이며,

머테리얼에 적용할 셰이더를 고르는 아래와 같은 단계에서 보여지는 경로를 지정해줄 수 있다.

위 사진에서 보이진 않지만, 아래로 스크롤을 내리면 Shader Graphs 라는 메뉴가 있고,

클릭해서 하위 메뉴로 들어가면 방금 만든 셰이더그래프의 이름이 표시되어 있다.

하위 경로는 슬래시로 구분해줄 수 있다. 경로를 Shader Graphs/Test 로 지정해주면,

이렇게 Shader Graphs 아래에 Test라는 하위 경로가 생기고,

그 안에 방금 만든 셰이더가 들어있는 것을 확인할 수 있다.

Main Preview

셰이더가 어떻게 보일지를 미리 보여주는 창이다.

위에서 설명한 것들 중 Blackboard, Graph Inspector, Main Preview는 셰이더그래프 편집 화면 상단의 버튼을 통해 창을 끄거나 켤 수 있다.

+ Sticky Notes

셰이더 편집 공간에 포스트잇같이 메모를 추가해 둘 수 있다.

■ 노드 다뤄보기

*노드 추가하기

셰이더그래프 편집공간에서 스페이스 바를 누르면

이렇게 노드를 생성할 수 있는 인터페이스가 나온다.

바로 추가하고 싶은 노드를 검색하면 결과가 나오고, 클릭하면 노드가 추가된다.

1. Color

첫 번째로 다뤄 볼 것은 Color 노드이다.

바로 위에서 한 것처럼 스페이스바를 누르고 Color을 검색하고, 추가해준다.

가운데 검정색 부분이 색을 표시하는 곳인데, 저 부분을 클릭해주면,

이렇게 색을 수정할 수 있다.

이렇게 방금 만든 Color 노드를 Base Color에 연결해주면 셰이더의 Base Color는 저 노드의 색깔이 된다.

+ 블랙보드 다루기

아까 Blackboard를 설명하면서, 특정 변수를 외부에서 조작할 수 있게끔 한다고 말했었는데 Color 노드도 그렇게 property로 만들어서 밖으로 빼 줄 수가 있다.

Color노드를 우클릭한 후, Convert To > Property를 클릭해주면 위와 같이 블랙보드에 Color가 추가된다.

그 다음, 방금 만든 셰이더를 적용한 머테리얼의 인스펙터 창을 보자.

사진과 같이 Color가 밖으로 나와있는 것을 볼 수 있다.

블랙보드의 Property의 이름을 바꿔주면 저렇게 밖으로 노출되는 이름도 달라진다.

이름을 바꾸려면 블랙보드에서 Property를 더블클릭해주면 된다.

2. Sample Texture 2D

이제 머테리얼에 Color 대신 Texture를 넣어보자.

Sample Texture 2D라는 노드를 찾아서 추가해준다.

위에서 설명했던 Color 노드처럼, 셰이더그래프 편집 공간에서 스페이스바를 누른 뒤, Sample Texture 2D를 검색하면 바로 나온다.

Texture(T2)부분에 아무 텍스쳐나 넣어주자.

그 다음, 여기에서 RGBA를 Base Color에 연결하면 머테리얼의 베이스컬러가 이 텍스쳐가 된다.

해당 셰이더를 적용한 머테리얼

3. Multiply

포토샵의 레이어 모드 중에는 ‘곱하기’ 라는 것이 있는데, 그것과 비슷한 기능이라고 생각하면 된다.

간단히 두 가지 요소를 곱해주는 것이다.

더보기 곱하기 원리 설명 지금까지는 명암을 넣거나 할 때 주로 사용했는데, 사실 이건 실제로 숫자를 곱해버리는 기능이다. 간단하게 설명하자면 색은 R,G,B 채널로 이루어져 있고, 각각의 채널은 0부터 1까지의 숫자로 표현할 수 있다. R이 1, G가 0, B가 0이라고 하면 앞의 색은 빨간색이 되고, R이 1, G가 1, B가 0이라고 했을 때, 가산혼합 원리를 생각해보면 결국 앞에서 말한 색은 노란색이 된다. 즉 위와 같이 되는 것이다. 마스터 스택을 보면 Base Color스택에는 뒤에 (3)이라고 쓰여있는 게 보일 텐데, 그게 바로 float3이라는 뜻이다. Metalic이나 Smoothness 뒤에 (1)이 써있는 건, 즉 각각의 값이 그냥 float, 그리고 0부터 1 사이의 값으로 표현될 수 있다는 것이다. 연산을 할 때 R은 R끼리, G는 G끼리, B는 B끼리 계산된다. 따라서 색 두개를 곱하게 되면 그 계산에 따른 결과가 나오게 된다. 예를들어 (1,1,1) * (0.5,0.5,0.5) = (0.5,0.5,0.5) 포토샵에서도 흰색에 회색을 곱하면 그대로 회색이 나오는 것과 같은 결과다.

위에서 계속 했던 것처럼 Multiply 노드를 만들어준다.

그리고 A에 처음에 만들었던 Color노드를,

B에 위에서 만들었던 Sample Texture 2D 노드를 연결하고,

Out을 마스터 스택의 Base Color에 연결해주면,

이렇게 텍스쳐와 색상이 곱해져서 나오는 것을 확인할 수 있다.

아까 Color를 Property로 빼 뒀으므로, 머테리얼의 인스펙터 창에서 곱해지는 색을 마음대로 수정할 수 있다.

4. (Keyword) Boolean

블랙보드에서도 직접 Property를 추가해줄 수 있다.

여기를 보면 Float, Color 등 많은 종류의 변수가 있는 것을 확인할 수 있다.

여기서 맨 밑의 Keyword는 약간 다른 종류인데, 이 Keyword 하위에 있는 요소들(Boolean, Enum)은 셰이더의 정적 분기를 위한 노드라고 한다.

경우에 따라서 출력되는 게 다른 상황에서, 셰이더의 Variant를 만들어내기 위해서 나온 기능이라고 하는데,

최적화에는 별로 좋지 않다고 하고..

나뉘는 경우의 수마다 다른 셰이더로 쳐 진다고 한다.

직접 사용해보자. 우선은 Keyword 아래의 Boolean부터 꺼낸다.

이 Boolean은 인스펙터 창에서 체크박스 형태로 나타나게 되는데,

그 체크박스의 체크 여부에 따라서 최종 결과물이 달라지는 형태이다.

즉, 체크박스에 체크가 되어있다면 위에서 On의 결과물이 Out으로 나가게 될 것이고,

반대로 체크가 되어있지 않다면 Off의 결과물이 Out으로 나가게 될 것이다.

간단하게 예제를 만들어보자.

아까 위에서 만들었던 곱하기의 결과물이 On으로, 그리고 곱하기를 하지 않은 Sample Texture 2D 상태가 Off로 들어오도록 노드를 연결해준다.

그런 다음 Boolean을 Base Color에 연결해준다.

그러면 이런 모습이 되고,

직접 씬에서 본다면

이렇게 Boolean의 On/Off 여부에 따라 결과물이 달라지는 것을 볼 수 있다.

5. (Keyword) Enum

Enum은 Boolean과 비슷하지만, 가짓수가 더 많다.

즉, 2개 이상의 리스트에서 고를 수 있는 형태이다.

Boolean과 같이 블랙보드의 keyword로 들어가서 꺼내준 다음, 아래 사진처럼 연결한다.

이렇게 만들게 되면 Enum의 값이 A일때는 텍스쳐에 컬러를 곱한 결과가, B일때는 그냥 텍스쳐가, 그리고 C일때는 그냥 컬러가 나오게 된다.

Enum 종류의 갯수는 블랙보드에서 Enum을 선택한 뒤 Graph Inspector > Node Settings에서 조절할 수 있다.

위 사진에 보이는 Entries에서 갯수를 추가하거나 뺄 수 있고, 이름을 바꿀 수 있다.

Default값이 무엇이 될 건지도 정할 수 있다.

■ 셰이더 그래프를 코드로 열어보기

셰이더그래프 파일을 선택하고 인스펙터 창을 보면, Open Shader Editor/View Generated Shader/Copy Shader 이렇게 3가지 메뉴가 존재한다. 여기에서 두번째 View Generated Shader를 누르면 코드로 생성된 셰이더를 볼 수 있다.

아직 뭔지는 모르겠다..

만약 코드를 열고 수정을 하면, 셰이더그래프에서 그렇게 수정된 부분을 볼 수 없다고 한다.

■ 간단한 예제 제작

간단하게 캐릭터에 들어갈 수 있는 셰이더를 제작해보았다.

개인적으로 게임에서 옷 염색 기능이 들어가는 걸 정말 매우 좋아하는 편인데, 때문에 염색/무늬넣기 기능을 구현할 때 쓰일 수 있을 것 같은 셰이더를 간단하게 만들어보았다.

셰이더를 적용할 옷은 이런 옷이다. (예전에 만들었던 개인작에서 꺼내왔다.)

만들어 본 예제의 기능은 다음과 같다.

3가지 무늬 (체크/별무늬/없음) 중에서 한 개 선택가능, 흰색 부분에만 들어감

위 사진에서 푸른색 부분 (앞쪽 리본, 치마)의 색을 조절가능

우선 전체 노드는 다음과 같다.

▶ 3가지 무늬 (체크/별무늬/없음) 중에서 한 개 선택가능

첫 번째 기능은 패턴 3개를 각각 Enum에 넣어두는 것으로 쉽게 해결할 수 있다.

그런 뒤, 선택한 것에 따라 옷 텍스쳐에 패턴을 곱해서 패턴이 나올 수 있도록 했다.

▶ 사진에서 푸른색 부분 (앞쪽 리본, 치마)의 색을 조절가능

두 번째 기능의 경우에는.. 안 배운 노드는 되도록 안 쓰려고 했는데……. 원하는 부분만 달라지게 하고싶어서 Lerp를 조금 이용했다.

(전체적으로 색이 달라지는게 굉장히 마음에 안 들었다…ㅜㅜ 이걸 고치지 않으면 잠을 못 잘 것 같았다.)

그리고 옷 텍스쳐의 색을 무채색으로 수정했다. 원하는 색을 골라서 색을 바꿀 부분에 Multiply 시킬 생각이었는데, 위 사진처럼 그냥 푸른색 텍스쳐 상태에서 곱하면 색이 원하는 대로 절대 나오지 않았기 때문이다.

텍스쳐 수정 전/후

그래도 회색이다 보니까 색이 조금 칙칙하게 나오긴 한다. 어떻게 개선할 수 있을지 궁금하다.

▶ 예제 완성

결과적으로 만들고 싶었던 기능이 잘 구현되었다.

색 조절이 되고,

무늬가 들어간다.

완성!

+ 기타

염색 색상을 랜덤으로 뽑아주는 시스템이 있는 게임을 해본 적 있는데, 그런건 RGB각각의 색상을 랜덤으로 뽑아서 조합한 다음에 유저들한테 주는 거였을까 궁금하다.

색상을 잘못 입력하면(1이상으로 올라가면) 빛나는 옷이 된다.

청강문화산업대학교 3학년 1학기 게임그래픽엔진심화 수업 정리입니다.

(셰이더 그래프/HLSL)아티스트를 위한 URP 셰이더 Shader #1

셰이더 처음 만들기 (노드버전)

그럼 맨 먼저 시작해 보죠. 이론 같은거야 좋은 책들이 많을테고, 여기 오시 분들은 그래요.. 서론 싫어하는거 다 안다고요… 하긴 저도 유투브에서 5분 설명할거 10분 서론 설명하는 강좌보면 막 빡치고 그래요.

그러니 일단 무식하게 시작해 보도록 합시다

여기서 할 일은 다음과 같습니다.

셰이더를 만들고, 메터리얼에 적용시키고, 그걸 다시 오브젝트에 적용시킵니다.

네 그래요. 별 것 아니죠. 그냥 빈 거 하나 만드는 겁니다. 겁내지 말고 따라해 봅시다.

셰이더 만들기

유니티 빈 화면에 공 하나 만드시고요

Project 창에서 + 키를 누르고 Shader / Universal Render Pipelint/ Unlit Shader Graph 를 눌러줍니다.

이름은 기본적으로 New Shader Graph 가 나옵니다만, 되도록이면 바꿔주는게 현명하겠죠. 이름은 알아보기 쉽게 써 주는 것이 국률입니다.

하지만 전 게으르니까 그냥 이 이름으로 갑니다.

Asset 폴더에서 오른쪽 클릭해서 Create.. 를 선택해도 됩니다. 취향껏.

이 부분이 근데 버전마다 조금씩 달라요. 뭘 이리 자꾸 바꾸는지..

메터리얼 만들기

셰이더가 만들어졌으면, 메터리얼에 이 셰이더를 적용해 줘야 합니다.

3Ds max 같은 프로그램을 다루셨던 분들에게는 익숙하지 않겠지만, 셰이더-> 메터리얼 -> 오브젝트 식으로 적용됩니다.

언리얼도 3Ds Max 와 비슷한 느낌이지요. 저는 개인적으로 이렇게 셰이더와 메터리얼이 분리되어 있는 쪽이 좋다고 생각합니다. (한 셰이더가 여러 메터리얼에 들어가는 개념이 좋아서요)

적용하는 법은, 셰이더를 만들때와 마찬가지로 + 버튼을 누르고 메터리얼을 생성한 후에, 아까 만든 셰이더를 메터리얼로 드래그엔 드롭 하는 방법도 있습니다만,

아래처럼 아예 만들어진 셰이더를 잡고 오른클릭하면 메터리얼이 생성될 때 부터 그 셰이더가 적용된 채 태어난다는 장점이 있습니다.

그 외에도 메뉴에서 선택하는 방법이 있는데 그건 나중에..

오브젝트에 메터리얼 적용하기.

자 다시 설명할께요. 셰이더에 메터리얼이 적용되었습니다. 이제 그 메터리얼을 오브젝트에 적용시켜주면 되는 겁니다.

Inspector에서 적용하는 법도 있지만 여기는 그게 중요한게 아니니까 간단하게 그냥 드래그엔 드롭으로 적용시켜 주도록 하지요

즉 정리하자면 이런겁니다. 셰이더 그래프를 만들고, 이를 메터리얼에 적용시키고, 이를 다시 오브젝트에 적용시킨다.

제일 쉬운 적용 방법은, 그냥 드래그 엔 드롭하는 것이다.

뭐 그렇다는 겁니다. 이러면 준비 완료입니다.

야호

셰이더 처음 만들기 (코드버전)

이번에는 셰이더를 처음 만드는 코드 버전입니다. 위와 똑같습니다만 코드인게 다르죠 노드와는 다릅니다.

노드만 보실 분들은 여길 보실 필요가 없습니다.

노드와는 다르다! 노드와는!!

코드로 만드는 것도 여기서는 매우 심플하고 쉬운 방향으로 시작해 보도록 하죠.

좋은 이론을 배우는 것도 좋지만, 일단 흥미를 잃어버리면 그게 무슨 의미가 있겠습니까 …?

쉽게 시작하는 법은 다음과 같습니다.

일단 이전과 똑같은 방법으로, 이번에는 셰이더를 하나 만드는데

Shasder/Unlit Shader 를 하나 생성합니다.

그럼 셰이더가 하나 생성이 되지요. 이름을 바꿔주면 더 좋겠지만 뭐 …

일단 만들었으니 열어봅시다.

VS 나 VScode 등을 이용해서 열어보면 다음과 같은게 열릴텐데요,

Shader “Unlit/NewUnlitShader” { Properties { _MainTex (“Texture”, 2D) = “white” {} } SubShader { Tags { “RenderType”=”Opaque” } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include “UnityCG.cginc” struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex, i.uv); // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }

여하간 본론부터 말하자면 지금 셰이더는 이게.. URP 셰이더가 아니예요. URP 이전, 빌트인(레거시) 유니티의 셰이더입니다.

뭐 그래도 사실 동작은 되는게, 프레그먼트로 짜여져 있는 기본 셰이더에 한해서는 빌트인 유니티 버전의 셰이더가 URP 에도 돌아 가기는 합니다만, 그게 제대로 돌아가는게 아니라서 사실 다시 짜 줘야 하는게 맞습니다.

이래저래 복잡해서 고민하고 있던차에.. 고맙게도 유니티에서 예제를 공개했네요.

https://docs.unity3d.com/Packages/[email protected]/manual/writing-shaders-urp-basic-unlit-structure.html

예에이!!!

그냥 간편하게 이걸 다 긁어 와서, 저 새로 만든 코드에 붙여 넣기만 하는 걸로 시작하겠습니다.

아래 코드가 위 링크에 있는, 유니티가 공개한 기초 코드인데요. 이걸로 시작하면 되겠습니다.

주석은 제가 일단 가볍게 번역해 봤어요.

이걸 그대로 긁어서 저 셰이더 코드에 붙여넣기만 하면 됩니다.

// 이 셰이더는 메쉬를 미리 지정된 칼라로 채우는 셰이더입니다 Shader “Example/URPUnlitShaderBasic” { // 유니티 셰이더의 프로퍼티 블럭(인터페이스를 만드는 곳)입니다. 지금은 비워놨습니다. // 왜냐하면 프레그먼트 (픽셀) 셰이더 코드에서 출력 칼라를 걍 정의해 놨기 때문입니다 Properties { } // 섭셰이더 블럭에 셰이더 코드가 들어 있습니다 SubShader { // 섭셰이더 태그는 언제 어떤 조건에서 섭셰이더 블럭을 정의하는지 또는 //패스가 실행되는지를 정의합니다. (그냥 일종의 설정용 태그란 말입니다.) Tags { “RenderType” = “Opaque” “RenderPipeline” = “UniversalPipeline” } Pass { // HLSL(High Level Shader Language) 코드 블럭입니다. SRP는 HLSL를 사용합니다 HLSLPROGRAM // 여기는 버텍스 셰이더의 이름을 정의하고요 #pragma vertex vert // 여기는 프레그먼트(픽셀) 셰이더의 이름을 정의합니다. #pragma fragment frag // Core.hlsl 파일에는 자주 사용되는 HLSL 메크로나 함수가 정의되어 있습니다. // 그리고 이렇게 #include를 사용하면 다른 HLSL 파일들을 참조할 수 있습니다. #include “Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl” // 이 구조체에는 어떤 변수가 들어 있는지 정의되어 있습니다. // 이 예제에서는 Attributes 구조체를 버텍스 셰이더의 인풋 구조체로 사용하고 있습니다. struct Attributes { // positionOS 변수는 오브젝트 스페이스의 버텍스 포지션을 가지고 있습니다 float4 positionOS : POSITION; }; struct Varyings { // 이 구조체의 포지션 변수는 반드시 SV_POSITION 시멘틱을 가지고 있어야 합니다. float4 positionHCS : SV_POSITION; }; // 버텍스 셰이더는 Varyings의 요소로 정의됩니다. // 버텍스 셰이더의 타입은 반드시 출력해 주는 구조체의 타입과 일치해야 합니다. Varyings vert(Attributes IN) { // Varyings 구조체로 출력(OUT) 선언을 해줍니다. Varyings OUT; // TransformObjectToHClip 함수는 오브젝트 좌표계의 버텍스 포지션을 // 클립스페이스로 변환해줍니다. OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz); // output을 리턴해 줍니다. return OUT; } // 프레그먼트 (픽셀) 셰이더 정의입니다. half4 frag() : SV_Target { // 색상 정의하고 리턴해 줍니다. half4 customColor = half4(0.5, 0, 0, 1); return customColor; } ENDHLSL } } }

그리고 아까와 같이, 이 셰이더를 메터리얼에 적용해 주고, 메터리얼을 오브젝트에 적용해 주면

이 그림과 같은 모습이 될 것입니다.

이제 기초 준비는 끝났습니다. 정말로 준비만…

위 코드가 필요하신분은 이걸 다운로드 받아주세요

NewUnlitShader.shader 0.00MB

블로그 주인장에게 커피값을 후원할 수 있습니다!

반응형

{ 일등하이 :Unity3D } :: [Deep Dive] Shader Graph 10.2.2 : 셰이더 그래프 시작하기 (Creating a new Shader Graph Asset )

Getting started | Universal RP | 10.6.0

Getting started To use the Universal Render Pipeline (URP), you can start a new Project or upgrade an existing Project. You can do this in the following ways: Create a new URP Project from a Template. If you are starting a new Project from scratch, this is

docs.unity3d.com

환영합니다! 블로그 아이디가 만들어졌어요.

Enum의 이름을 _MaterialChange로 바꿨습니다. 지금 밝게 활성화 된 부분들이 해당 노드인데요,

3개의 분기점을 만들고, 각 매터리얼에 해당하는 텍스쳐맵을 연결시켜 주었습니다.

(Metallic은 첫번째 매터리얼만 금속이라, 차례대로 1,0,0값을 할당해 주었습니다)

위 쉐이더를 이용해서, 졸업작품 작업을 할 때, 제작된 더미 매터리얼이 4종류가 있었는데,

매터리얼 4개를 만들어서 각 텍스쳐에 해당하는 칸에 넣어서 오브젝트에 적용해서 보아도 되지만,

단순히 하나의 매터리얼에 위 쉐이더를 적용시키면 프로퍼티에서 빠르게 매터리얼을 바꿀 수 있기 때문에,

느낌을 비교하는데에 유용하게 사용할 수 있었습니다.

키워드에 대한 정보 유니티 셰이더 그래프

다음은 Bing에서 유니티 셰이더 그래프 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

See also  신생아 발달 단계 | 소아과 의사가 알려주는 1개월차 신생아기에 관한 모든 것! 엄빠들의 교과서 207 개의 베스트 답변
See also  노트 4 배터리 수명 | [갤럭시폰] 배터리 수명 간단 확인법 17702 명이 이 답변을 좋아했습니다

See also  비 피터 진 | 열 가지 진을 알아보자 / 진 10종 리뷰 모든 답변

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’

  • 셰이더
  • Shader
  • URP
  • Shader Gragh
  • 쉐이더

기적의 #셰이더 #그래프 #’어떤 #노드든 #이해시켜 #드립니다’


YouTube에서 유니티 셰이더 그래프 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 기적의 셰이더 그래프 ‘어떤 노드든 이해시켜 드립니다’ | 유니티 셰이더 그래프, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *