개발 노트 [Vulkan 일지] 파이프라인 작성... 2017/09/20 09:49 by cagetu

진행 중인 것과 할 것들...

1. 파이프라인 생성을 작업하면서 파생되는 것들을 전부 정리 중.... 

* Shader 정리
* Shader Description 정리
* VertexDeclaration 정리
-------------------------------------------------------------------------------------------
- 버텍스 버퍼와 Shader의 버텍스 입력 구조체 사이의 관계를 정리하자! (17.09.05)
- 깔끔하지는 않지만, 일단 흐름은 맞춰놓음.. 나중에 한 사이클 더 돌 때에는 정리하자 (17.09.07)
-------------------------------------------------------------------------------------------
* RenderState 처리
-------------------------------------------------------------------------------------------
- 파이프라인 조립을 위해 기반 State 연결고리는 마련함. 외부에서 렌더스테이트 설정 정리 필요 (17.09.07)
- VkPipeline 생성 성공 (vkCreateGraphicsPipeline) (17.09.19)
-------------------------------------------------------------------------------------------
* PipelineStateObject 관리 하는 부분 연구 및 정리 (PipelinePool, PipelineCache)

2. 렌더링 프로세스 정리 

Pipeline 생성 관리하고 나면, 렌더링 루프 한 프레임을 러프하게 구성해보자.


- 이후 삼각형 렌더링 시도

* CommandBuffer 공부 및 정리
* VertexBuffer
* IndexBuffer
* Shader 파라미터
* Transform 정보를 적용한다. (Vulkan Coordinate)
* VertexDeclaration 연결
* Draw 등...

-------------------------------------------------------------------------------------------
뭘까??? 뭔가 설정 순서를 못 맞춘 듯!!! (17.09.20)
=> PipelineState설정 시 빠진 내용들이 있어서 채워주니 성공

컴파일 오류는 없는데, 화면에 나오는 것도 없음 . ㅜㅜ;;
- VulkanTransform이나, 세팅을 확인해보자!
=> CommandBuffer의 Submit을 연결하지 않아서 ...

=> CommandBuffer 사이의 동기화 처리를 하지 않아서 문제가 발생... Fence 추가. (Submit이 완료될 때까지 대기)
=> 아직 Fence에 대해서 정확히 이해를 못하고 있는 듯 하다...

DS (ERROR): object: 0x24 type: 23 location: 3171 msgCode: 52: DS 0x24 bound but it was never updated. It is now being used to draw so this will result in undefined behavior.
DS (ERROR): object: 0x24 type: 23 location: 2934 msgCode: 52: DS 0x24 encountered the following validation error at vkCmdDrawIndexed() time: Descriptor in binding #0 at global descriptor index 0 is being used in draw but has not been updated.

ParameterValidation (ERROR): object: 0x0 type: 0 location: 367 msgCode: 4: vkUpdateDescriptorSets: required parameter pDescriptorWrites[0].dstSet specified as VK_NULL_HANDLE
DS (ERROR): object: 0x0 type: 23 location: 999 msgCode: 21: Cannot call vkUpdateDescriptorSets() on descriptor set 0x0 that has not been allocated.
=> 이건 DescriptorSet을 잘못 바인딩해서 그런 듯
1. DescriptorSetPool 생성
2. DescriptorSetLayout 생성 및 설정
3. DescriptorSet 생성
4. UpdateDescriptorSets으로 값 실제로 값 연결

[TODO]
- CommandBufferPool 필요
- CommandBuffer 동기화 처리 공부 및 적용

-------------------------------------------------------------------------------------------

3. 이후 텍스쳐 생성 시도
- 삼각형에 텍스쳐링 시도
여기까지 9월 목표! (실패!!!! ㅡㅡ;;)

렌더링이 되지 않는다... 무엇이 문제일까??? (추석 기간)

1. VertexBuffer 세팅 확인
2. IndexBuffer 세팅 확인
3. Shader 세팅 확인
4. Transform 확인 및 카메라 확인
5. RenderState 확인

-------------------------------------------------------------------------------------------

4. 멀티 패스 렌더링 시도 (10월)

* RenderTarget 및 RenderPass 정리 (SubPass)



덧글

댓글 입력 영역



메모장

내가 먼 훗날에 이 글들을 보았을 때, 좋은 추억이 될 수 있기를...

나를 위해... 나에게 쓰는...

msn: cagetu@hotmail.com
mail: cagetu79@gmail.com
twitter: twitter.com/cagetu
facebook: facebook.com/cagetu