셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (6)

2025. 4. 1. 22:42·Dev./그래픽스 Graphics

💭회고

 

셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (5)

💭회고 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (4)💭회고 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (3)💭회고 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (2)💭회고202

raindrovvv.tistory.com

 

셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (4)

💭회고 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (3)💭회고 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (2)💭회고2025.03.20 - [Dev./그래픽스 Graphics] - 셰이더 그래프 학습 정리 - '샤

raindrovvv.tistory.com

 

셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (3)

💭회고 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (2)💭회고2025.03.20 - [Dev./그래픽스 Graphics] - 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' 셰이더 그래프 학습 정리 - '샤라웃 투 고

raindrovvv.tistory.com

 

셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (2)

💭회고2025.03.20 - [Dev./그래픽스 Graphics] - 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌'💭회고셰이더는 게임 및 그래픽 디자인에서 중요한

raindrovvv.tistory.com

 

셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌'

💭회고셰이더는 게임 및 그래픽 디자인에서 중요한 기술로, 3D 객체를 현실적으로 표현하거나 독창적인 효과(마인크래프트 셰이더 효과를 생각하면 이해가 쉽다...!)를 생성하는 데 사용된다.

raindrovvv.tistory.com


오늘 살펴볼 세 가지 핵심 카테고리는 다음과 같다:

  1. 행렬(Matrix) - 3D 공간에서 변환하는 기본 도구(?)
  2. 범위와 근삿값 함수(Range & Round Functions) - 값을 제어하고 조정하는 핵심 연산
  3. 삼각함수(Trigonometry) - 회전, 파동, 주기적 효과를 구현하는 데 필수적인 함수

📒학습 내용

1. 행렬(Matrix)

행렬은 3D 그래픽스에서 물체의 위치, 회전, 크기를 조작하는 도구이다.

🔹 행렬 구성(Matrix Construction)

행렬 구성은 이동(Translation), 회전(Rotation), 크기 조절(Scale)을 하나의 행렬로 결합하는 과정.

➡️ 언리얼에서 행렬 구성은 FTransform 클래스를 통해 쉽게 처리할 수 있다. 캐릭터의 움직임을 만들 때, 여러 개의 변환을 결합하여 부드러운 애니메이션을 구현한다.

 

머티리얼 연산에서는 어떻게 쓰이는 거지...?

주로 공간 변환을 위해 사용된다. 예를 들어, 텍스처 좌표나 노말 데이터를 다른 좌표계(예: 월드, 로컬, 탄젠트 스페이스)로 변환할 때 행렬 연산이 필수적이다.

  1. UV 좌표 변환: 머티리얼 내에서 텍스처의 회전, 스케일, 이동 등을 구현할 때 3×3 행렬을 이용하여 UV 좌표를 변환할 수 있다.
  2. 노말 매핑과 TBN 변환:
    • TBN 행렬 (Tangent, Bitangent, Normal)을 사용해 텍스처에 저장된 노말 데이터를 실제 월드 스페이스의 노말 벡터로 변환한다.
    • 머티리얼 셰이더에서는 이 행렬의 전치(Transpose)를 사용해, 텍스처의 노말 데이터를 올바르게 재구성하여 조명 계산에 활용한다.
  3. 좌표계 변환:
    • 오브젝트의 로컬 좌표를 월드 좌표로, 또는 반대로 변환할 때 행렬을 사용한다.

🔹 행렬 분할(Matrix Split)

하나의 행렬을 위치, 회전, 크기 요소로 분리한다.

 

왜 행렬 분할이 필요할까?

  1. 개별 조정:
    • 오브젝트의 전체 변환 행렬에서 특정 요소(예: 위치만 변경하거나 회전만 수정)를 수정할 때, 분할하여 각 구성 요소를 따로 다루면 보다 정밀하게 제어할 수 있다.
      • 예를 들어, 머티리얼에서 텍스처 좌표에 오프셋(Translation)을 적용하거나 회전 효과를 줄 때, 전체 행렬 대신 원하는 요소만 추출하여 조작할 수 있다.
  2. 디버깅 및 분석:
    • 복잡한 변환 과정을 시각적으로 분석하거나, 문제가 발생했을 때 어느 부분(위치, 회전, 스케일)에서 문제가 발생했는지 파악하는 데 유용하다.
  3. 커스텀 효과 구현:
    • 커스텀 HLSL 코드나 블루프린트를 사용할 때, 행렬을 분할하여 각 요소에 기반한 계산을 따로 수행하면 보다 정교한 효과(예: 동적인 오프셋, 회전 기반 왜곡 등)를 구현할 수 있다.

🔹 행렬식(Matrix Determinant)

행렬이 역행렬을 가질 수 있는지(즉, 변환이 가역적인지) 판단하는 값.

~


🔹 행렬 전치(Matrix Transpose)

행과 열을 서로 바꾸는 연산으로, 직교 행렬의 경우 전치가 역행렬과 동일한 특성을 가진다.

노말 맵 계산에서 TBN(Tangent, Bitangent, Normal) 행렬의 전치를 사용하여 효율적으로 좌표계를 변환한다. 


2. 범위 함수(Range Functions)

값을 제한하거나 변환하여 의도한 범위 내에서 작동하도록 한다. 이는 특히 머티리얼 작업에서 중요하다.

함수 설명 실무 활용
Clamp(제한) 값을 최소값과 최대값 사이로 제한 라이팅 강도가 너무 밝거나 어두워지는 것을 방지
Fraction(분수) 소수점 이하 부분만 반환 텍스처 타일링, 반복 패턴 구현
Maximum(최대) 두 값 중 큰 값을 반환 여러 광원 효과를 결합할 때 사용
Minimum(최소) 두 값 중 작은 값을 반환 그림자 계산이나 값의 하한선 설정
One Minus(1빼기) 1에서 입력값을 뺀 결과 반환 불투명도 반전, 마스크 반전 효과
Saturate(포화) 값을 0과 1 사이로 제한 색상값 안정화, 노멀 벡터 정규화

3. 근삿값 함수(Round Functions)

근삿값 함수들은 값을 정수에 가깝게 조정하거나 특정 조건에 따라 변환한다.

🔹 Ceiling(올림)

입력값보다 크거나 같은 가장 작은 정수로 올린다.

💡ex. 픽셀아트 스타일의 게임에서 텍스처 좌표를 픽셀 단위로 맞추기 위해 Ceiling 함수 활용. 특히 2D UI 요소가 정확한 픽셀 경계에 위치하도록 할 때 유용하다.


🔹 Floor(내림)

입력값보다 작거나 같은 가장 큰 정수로 내린다.

💡ex. 타일 기반 지형이나 그리드 시스템 구현에 필수적이다. 월드 좌표를 그리드 좌표로 변환할 때 Floor를 사용하여 정확한 타일 인덱스를 찾는다.


🔹 Round(반올림)

가장 가까운 정수로 반올림한다.

💡ex. 애니메이션 프레임 계산에서 부동소수점 오차를 줄이기 위해 사용한다. 또한 범프 매핑이나 이미지 효과에서 선명한 경계를 만드는 데 유용하다.


🔹 Sign(부호)

입력값의 부호를 반환한다(양수면 1, 음수면 -1, 0이면 0).


🔹 Step(단계)

지정된 임계값보다 입력값이 크면 1, 작거나 같으면 0을 반환한다.

💡ex. 선명한 경계(예: 물과 육지의 경계선)를 만들거나, 로직 분기(논리적 분기)를 셰이더 내에서 구현할 때 활용한다. 또한 마스크 효과나 레벨 오브 디테일(LOD) 전환 지점을 결정하는 데도 사용한다.


🔹 Truncate(자르기)

소수점 부분을 제거하고 정수 부분만 남긴다.

💡ex. 픽셀화 효과나 로우 폴리 스타일 게임에서 좌표값을 양자화(quantize)할 때 사용한다. 또한 프로시저럴 텍스처 생성 시 패턴의 경계를 명확하게 만드는 데 활용한다고 한다.


4. 삼각함수(Trigonometry)

삼각함수는 주기적인 움직임, 회전, 파동 효과를 만드는 데 필수적이다.

 

🔹 기본 삼각함수 (Sine, Cosine, Tangent)

사인, 코사인, 탄젠트 값을 반환한다.

💡ex. 언리얼 엔진에서 파도 효과를 구현할 때, Sine과 Cosine을 조합하여 자연스러운 물결을 만들 수 있다. 또한 Sine을 시간 변수와 함께 사용하여 부유하는 물체나 호버링 효과를 구현한다.


🔹 역삼각함수 (Arcsine, Arccosine, Arctangent, Arctangent2)

삼각함수의 역함수로, 값으로부터 각도를 계산한다.


🔹 각도 단위 변환 (Radians To Degrees, Degrees To Radians)

라디안과 도 사이의 각도 단위를 변환한다.

💡언리얼 엔진의 회전 함수는 주로 도 단위를 사용하지만, 수학 라이브러리 함수는 라디안을 요구한다. 따라서 두 시스템 사이에서 작업할 때 변환이 필요하다. 블루프린트에서는 각도 변환 노드를 활용하여 쉽게 처리할 수 있다.

'Dev. > 그래픽스 Graphics' 카테고리의 다른 글

셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (8-완결)  (0) 2025.04.04
셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (7)  (0) 2025.04.02
셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (5)  (0) 2025.03.31
셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (4)  (0) 2025.03.28
셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (3)  (0) 2025.03.24
'Dev./그래픽스 Graphics' 카테고리의 다른 글
  • 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (8-완결)
  • 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (7)
  • 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (5)
  • 셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (4)
raindrovvv
raindrovvv
raindrovvv 님의 블로그 입니다.
  • raindrovvv
    raindrovvv 님의 블로그
    raindrovvv
  • 전체
    오늘
    어제
    • 분류 전체보기 (89) N
      • Dev. (82) N
        • UE 언리얼 엔진 (45) N
        • Unity 유니티 (0)
        • Wwise 와이즈 (3)
        • 게임 네트워크 (8)
        • 그래픽스 Graphics (18)
        • 프로젝트 (4)
        • 기타 개발 관련 (4)
      • Computer Science (0)
        • 하드웨어 HW (0)
        • 소프트웨어 SW (0)
        • 통신 (0)
        • 데이터 (0)
      • 블로그 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임네트워크
    고라니
    Git
    언리얼엔진
    포스트프로세스
    unrealengine
    게임
    TA
    프로젝트
    오디오미들웨어
    그래픽스
    네트워크
    깃
    AI
    UE
    머티리얼
    언리얼
    게임개발
    Unreal
    셰이더
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
raindrovvv
셰이더 그래프 학습 정리 - '샤라웃 투 고라니🦌' (6)
상단으로

티스토리툴바