[Unreal] 14.머티리얼_C++
본 문서는 어소트락 언리얼엔진 게임프로그래머 양성과정의 강의를 토대로 필기한 내용입니다
머티리얼_CPP
머티리얼 인스턴스
- 원본 머티리얼의 파라미터 값만 조절하여 재사용 가능
- 셰이더 컴파일을 하지않음
머티리얼 인스턴스 다이내믹
UMaterialInstanceDynamic: Material Instance Dynamic를 이용해서 코드로 머티리얼을 제어할 수 있다피격 시 머티리얼 값 변경, 랙돌 이후 Dissolve Parameter 변경 등으로 머티리얼 조작을 통해 단순하게 색상 및 머티리얼 질감 변경을 만들 수 있다
- Dissolve
- 몬스터가 죽으면 Death 관련 함수 작동
- Death 관련 함수가 작동될 때,
mDissolveboolean 변수 체크 - Tick() 함수에서
mDissolve값이 체크될 때, MID 조작
- Hit
- 다중 피격을 당할 때, 타이머를 체크해서 피격 효과 구현
FTimerHandle: 핸들을 이용해서 타이머를 제거 하는 방식. 필요한 만큼만 타이머 사용하고 제거TimerManager에 있는SetTimer()함수를 오버로딩해서 사용
AIPawn.cpp
void AAIPawn::BeginPlay()
{
Super::BeginPlay();
// 지정된 Material을 Dynamic Material Instance로 변경한다
int32 MaterialCount = mMesh->GetNumMaterials();
for(int32 i = 0; i< MaterialCount; i++)
{
UMaterialInstanceDynamic* Mtrl = mMesh->CreateDynamicMaterialInstance(i);
}
}
포스트 프로세스 머터리얼
카메라 후보정 필터효과
색, 명암, 채도, 화면 잔상, DoF, 화면 빗방울, 모션블러 등등 보정
PostPrecessVolume액터 아웃라이너에 추가- Depth Of Field : 씬의 초점 앞이나 뒷부분을 거리에 따라 흐리게 만드는 기법
- Motion Blur : 잔상 효과
- Lens Flares : 렌즈에 플레어 효과 나오는 것 처럼 보이기
- 컬러 그레이딩 : 색 보정
- PP 세팅
- 무한규모(언바운드) : 체크 시 전체 월드에 상시적용
포스트 프로세스 머티리얼 커스텀
포스트 프로세싱용 새 머티리얼 생성 및 머티리얼 도메인 Post Process로 지정
[렌더링 기능] - [포스트 프로세스 머티리얼]에 머티리얼 추가하여서 커스텀 가능
SceneTexture 노드를 이용해서 최종적으로 카메라에 랜더링 되어 실제 플레이어가 보는 화면(씬)을 만들어 낸다
아웃 라인을 판단하는 방법
- 어떤 지점을 지정한 후 8방향의 지점의 픽셀을 찍는다
- 그 지점보다 큰 깊이가 있다면 그 사이 지점이 아웃 라인
포스트 프로세스를 이용한 특정 물체의 아웃라인 만들기 -> Custom Stencil 사용
머티리얼 함수로
Outline_Dir에셋을 만들고, 여기에서 아웃라인 만드는 함수 머티리얼 그래프 작성8 방향
커스텀 뎁스와 씬 뎁스의 깊이 차이를 구해서 가려지는 물체에 대한 처리도 가능
머티리얼 컬렉션
- 컬렉션에 색상을 미리 저장해 두고,
CollectionParameter노드를 활용하여 MF에서 불러와서 사용 가능 - 커스텀 스텐실 값을 가져와서 커스텀 스텐실 값의 일의 자리 숫자를 통해 분기문을 나눠서 리턴값을 다르게 할 수 있음
오클루젼 컬링
보이지 않는 부분을 렌더링하지 않는 기법