Computer Graphics/Vulkan

Vulkan - 5. 두번째 Subpass에 uniform buffer추가

surkim 2024. 12. 26. 16:59

1. 지금 잘되고있는 렌더링에 서브패스만 추가해서 감마값만 바꿔보기 - 서브패스 추가하기

2. 이 서브패스에 유니폼 버퍼를 추가해보기

3. 택스쳐도 넣어보기

4. 지연 렌더링 기본 구현하기 - 퐁모델로 간단하게

5. pbr적용

6. 렌더패스 추가하여 쉐도우맵 생성해보기 - 일단 방향성 광원으로

7. 이걸 받아서 그림자 만들어 보기

8. 렌더 패스 동적 생성 - 빛의 개수만큼

9. 다중 광원 적용 - 방향성 광원만

10. 큐브맵 활용해서 점광원 + 스포트라이트까지 추가

 

내가 만든 렌더링 단계의 두번째꺼 했다.

앞에 한 것보다 볼륨이 크지가 않다.

하지만 이거 다음 단계를 퐁셰이딩으로 지연렌더링 구현할꺼라서 정리하는 차원

+

정말 별건 없는데

유니폼 하나 추가하는데도 실수할게 많아 정리해놓고 나중에 추가할 일 생길 때 참고용으로 쓴다. 

 

1. shader 변경

유니폼 추가할 거니 shader부터 uniform 받게끔 변경

 

2. descriptorset layout 변경

이제부터 이 놈은 shader와 한 몸이다. shader보면 이 놈도 꼭 봐야한다.

실질적인 구조체는 여기선 필요없고 그냥 유니폼 넣어준다~ 선언만 해주면 된다.

 

3. descriptorset 변경 + uniform buffer 만들기

여기서 uniform 구조체의 실질적 사이즈가 들어간다.

uniform buffer먼저 만들고 descriptorset에 연결해줘야한다.

binding 번호 조심! shader - descriptorset layout - descriptorset  요녀석들 바인딩 번호가 다 같아야한다.

 

4. pipeline 변경

할 게 없다. 할 게 있는줄 알았는데 없었다. 그래도 gamma shader 변경해줬으니 한번 봐줬다.

왜 할게 없냐? descriptorset layout 얘가 변경되어 얘를 넣는것이기 때문에

실질적인 코드에서의 변경점은 없다.

 

5. rendering 과정에서 uniform버퍼에 실제로 변수 넣어주기

다 초기화 해줬으니 이제 rendering할 때 구조체 만들어서 uniform buffer에 넣어주기만 하면된다!

 

쉽지만 shader에서 뭐하나 바꿀때 code에서 바꿔줘야 하는 부분이 많으니

꼭!! 뭐 바꾸면 이 단계를 다 검토하자!!!!

 

1. 지금 잘되고있는 렌더링에 서브패스만 추가해서 감마값만 바꿔보기 - 서브패스 추가하기

2. 이 서브패스에 유니폼 버퍼를 추가해보기

3. 택스쳐도 넣어보기    <- 요녀석은 그냥 했다 치고 다음단계로 넘어가야겠다. 어렵지 않기에

4. 지연 렌더링 기본 구현하기 - 퐁모델로 간단하게

5. pbr적용

6. 렌더패스 추가하여 쉐도우맵 생성해보기 - 일단 방향성 광원으로

7. 이걸 받아서 그림자 만들어 보기

8. 렌더 패스 동적 생성 - 빛의 개수만큼

9. 다중 광원 적용 - 방향성 광원만

10. 큐브맵 활용해서 점광원 + 스포트라이트까지 추가

 

0
그냥 실시간으로 감마값 조정만 해줬다. 작지만 위대한 한걸음이다.