본문 바로가기

공부/DirectX

PaperBurn

ObjectComponent를 상속받아서 만든다.


페이퍼번 - 불타 없어지는 효과 
이미지를 활용해서 이미지 RGB(RGB값이 전부 같다)값을 이용하여

타들어가는 효과를 보여주는것이다.

 

원리는 연기나 타들어가는 텍스트를 가져와서 RGB값을 0~1값(UV)로 전환해준다 (이것을 일단 TexUV라고 명칭하겠음)

필터(보여주는 잠깐의 시간)를 미리 가져와서 TexUV 더하고,빼서 사이를 구해준다음

타이머를 돌려서 만약 타이머가 그 사이에 도착한다면  Out,Center,In으로 차례대로 색상을 바꿔 출력하다가

만약 Timer가 TexUV 를 넘어섰다면 알파값을 0으로 돌려 출력을 안하게 한다.

반대로는 Timer가 Textuv보다 작아진다면  알파값0 넘어선다면 색상바꿔출력하다가 이미지나타나게하면댄다.

 

한줄정리

TexUV-Filter  TexUV+Filter 사이에 Timer가 존재한다면 출력 아니면 미출력, 이후 이미지를

출력하거나 안하거나는 조건으로

 


데이터들을 오브젝트마다 업데이트해줄 수 있게 작업을 한다.
페이퍼번을 쓴다 안쓴다는 재질에다가 할 수 있는데
페이퍼번을 적용하는게 몬스터가 죽었을때 불타오르듯이 사라지는? 그런느낌

씬컴포넌트는 계층구조였지만 PaperBurn는 계층구조가 아니다.
그래서 계층구조없이 별도로 개수만큼 가질수있게 설계를 해주어야한다.

페이퍼번
미리 넣어놨다가 원하는 타이밍에 실행을 시키기위해 bool변수 썻음
페이퍼번 활성 비활성화를 CBuffer에 안넣었다.
왜냐하면 실행하게되면 다른 셰이더를 호출시킬것이기 때문이다.

기본 셰이더에 페이퍼번을 어떻게 만들것이냐면
함수를 이미 만들어져있다. 필요하면 함수에서 호출을 해서 효과를 낼것이다.

페이퍼함수에서 함수를 호출해서 사용할건데
안쓰는애들은 안쓰고 쓰는애들은 쓰게끔 만들어야한다.
재질같은 모든 오브젝트가 들어간곳에다가 페이퍼번을 할지 안할지 넣어놓은것이다. 

페이퍼번처리를 하기위한 상수버퍼처리는 켜졌을때만 처리를 해주는 방식으로 동작을 시킬 것 이다.

페이퍼번은 정보들을 상수버퍼에서 컬러들을 받아다가 처리하는 시스템이 있지만
상수버퍼를 가지고있으면서 생성하는것은 컴포넌트인데


페이퍼번은 시간으로 컨트롤 한다.



페이퍼번이라는 렌더링 효과를 만들어낼 수 있다.
직접 만들어봐야한다.

월요일날 랜더링기술로 왜곡처리를 해봅시다

이정도면 나중에 셰이더기술 구현할때 참고해서 충분히 만들 수 있다.

'공부 > DirectX' 카테고리의 다른 글

UI 구조 (인게임)  (0) 2021.09.27
Distortion  (0) 2021.09.14
ObjectComponent  (0) 2021.09.10
렌더타겟구조  (0) 2021.09.09
DirectX 인스턴싱  (0) 2021.09.06