개인 자료란 (JE)

  서버 커뮤니티

Profile Towercrain 대표칭호 없음

Towercrain 168d45d0d93d4521ace38d81e7cea4ed

Profile

자료 공통 리뷰, 강좌 그외의 분야

[옵티파인 셰이더 강좌] 전체적인 렌더링 과정에 대한 설명

2023.05.24 조회 수 222 추천 수 2

관련 글 :

  1. [옵티파인 셰이더 강좌] 전체적인 렌더링 과정에 대한 설명
  2. [옵티파인 셰이더 강좌] gbuffers fallback tree
  3. [옵티파인 셰이더 강좌] 첫 셰이더 만들기


셰이더란, 화면 상의 방대한 양의 픽셀을 빠르게 계산... ...또한, 일반적으로 규모가 있는 게임에서 셰이더는 단일 프로그램이 아닌 여러 프로그램으로 나누어 작성되며, 여러개의 작은 프로그램들이 유기적으로 연결되어 하나의 큰 프로그램으로서 기능합니다.


 배경 설명을 최소화 하고, 바로 본론에 들어가겠습니다. 


옵티파인 셰이더는 크게 5~6가지 과정을 거쳐 화면을 렌더링 합니다.

1. 화면 비우기

2. 그림자 계산용 화면 렌더링 (선택)

3. 불투명 개체 렌더링

4. 화면 공간 셰이딩

5. 반투명 개체 렌더링

6. 화면 공간 셰이딩

여기에서 화면 공간 셰이딩 과정은 포토샵과 비슷한 처리를 담당하며, 

그림자 계산용 화면 렌더링 과정은 그림자를 빠르게 렌더링하기 위한 특정 알고리즘을 위한 지원이나, 

당장에는 중요하지 않으니 나중에 설명하겠습니다.


불투명/반투명 개체 렌더링 과정은 마인크래프트 내부에서 (UI와 메뉴 등을 제외하고) 눈에 보이는 모든 개체를 렌더링 합니다.

 여기에서 말하는 개체는 엔티티 뿐만 아니라 각종 블록과 하늘 등 눈으로 구별할 수 있는 거의 모든 것을 지칭합니다.

또한, 이 렌더링 과정은 아직까지 옵티파인이 반투명한 개체와 불투명한 개체를 제대로 구별하지 못해 제대로 작동하지 않으며, 고급 셰이딩에 사용되기에, 이 또한 나중에 설명하겠습니다.

이 둘을 구별하지 않으면, 렌더링 과정은 다음과 같이 단순화 됩니다.

1. 화면 비우기

2. 그림자 계산용 화면 렌더링(선택)

3. 개체 렌더링

4. 화면 공간 셰이딩


옵티파인 셰이더는 고정 파이프라인을 기반으로 하기 때문에, 

파이프라인(렌더링 과정)에서 일부 구성요소를 대체하거나 생략할 수 있지만, 새로운 구성요소를 추가할 수 없습니다. 

사용 가능한 프로그램들의 이름은 정해져 있으며, 그 밖의 이름을 가진 셰이더는 무시됩니다. 

생략된 프로그램은 보통 옵티파인에 의해 다른 프로그램으로 대체됩니다.

개체 렌더링 전용 셰이더는 모두 gbuffers_로 시작하며, 

렌더링 대상에 따라 다른 이름이 붙습니다.

예를 들어, '대부분의 엔티티'를 담당하는 셰이더는 gbuffers_entities로 이름지어지고,

다시gbuffers_entities.vsh와 gbuffers_entities.fsh 로 나눠지죠

사용 가능한 프로그램의 이름 목록은 옵티파인 공식 문서에서 확인할 수 있으나, 아래에 적어놓겠습니다.

shadow    그림자 렌더링 알고리즘 전용 특수 화면 렌더링
shadowcomp    그림자 렌더링 알고리즘 전용 화면 전용 화면 공간 셰이딩

shadowcomp1
...
shadowcomp99

prepare    화면 비우기
prepare1
...
prepare99

gbuffers_basic               끈, 디버그용 청크 표시선 등
gbuffers_line                엔티티 히트박스 표시선, 블록 히트박스 표시선 등
gbuffers_textured            빛의 영향을 안 받는 파티클 (이 없기 때문에, 생략된 gbuffer 셰이더가 없을 시 사실상 사용되지 않음)
gbuffers_textured_lit        빛의 영향을 받는 파티클과 월드보더
gbuffers_skybasic            하늘, 별, 공허
gbuffers_skytextured         해와 달, 리소스팩 스카이박스
gbuffers_clouds              구름
gbuffers_terrain             지형(월드를 이루는 대부분의 블록은 청크 단위로 묶여 렌더링 됨)
gbuffers_damagedblock        블록을 캘 때 금이 가는 오버레이
gbuffers_block               상자, 문, 인챈트 테이블 책 등 움직일 수 있는 모든 블록
gbuffers_beaconbeam          신호기 광선
gbuffers_entities            크리퍼, 떨어지는 블록, 보트, 플레이어 등 각종 엔티티
gbuffers_entities_glowing    분광 화살 등에 의한 발광 효과를 받은 모든 엔티티(발광 효과 자체는 수동으로 구현해야 함)
gbuffers_armor_glint         인챈트를 받은 아이템의 빛나는 효과 오버레이
gbuffers_spidereyes          거미, 엔더맨, 엔더드래곤, 팬텀 등의 빛나는 눈 오버레이
gbuffers_hand                손 또는 손에 들린 불투명한 아이템
gbuffers_weather             비와 눈

deferred_pre
deferred                     불투명 개체 렌더링 단계 이후의 화면 공간 셰이딩
deferred1
...
deferred99

gbuffers_water               물, 색유리 등 반투명한 모든 블록
gbuffers_hand_water          손에 들린 반투명한 아이템

composite_pre                반투명 개체 렌더링 단계 이후의 화면 공간 셰이딩
composite
composite1
...
composite99

final                        composite 이후의 화면 공간 셰이딩 (최종 화면 출력용)




1개의 댓글

뉴스 및 창작물
/files/thumbnails/712/796/003/262x150.crop.jpg?20240525085438

레드스톤

마인크래프트 노트블록으로 만든 『 봄을 고하다 (春を告げる) 』

Sonttukk

2024-05-25

0

/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견 3

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0