본문 바로가기

분류 전체보기92

0. Vulkan을 시작하면서..... 벌칸 공식 홈페이지 입니다.https://vulkan.lunarg.com/ Vulkan은 최신 GPU 파이프라인 아키텍처를 위한 혁신적인 고성능 3D 그래픽스 및 컴퓨팅 API 입니다.또한 예측가능한 동작을 보장하고 명시적인 API로써지연이나 걸림 현상 없는 부드러운 렌더링 속도를 갖도록 해줍니다. 이게 뭔소리지 ? 하는 분들을 위해... 썰을 풀어보겠습니다. 3D 프로그램을 만들때 업계에서 대부분 게임엔진 Unity, Unreal을 사용합니다.포션이 적기는 하지만 자체 엔진을 개발하는 곳도 있고,임베디드 업계에서는 직접 OpenGLES를 사용하여 앱개발을 합니다. 게임엔진에서 제공하는 UI를 통해 우리는 쉽게 3D Application을 만들수가 있는데요그래픽을 사용하는 컴포넌트들이 백엔드 API를 통.. 2024. 6. 7.
5. 알파블렌딩과 컷아웃 알파(Alpha)는 오브젝트의 투명도를 의미합니다. 알파블렌딩은 투명한 오브젝트가 앞에 있을때, 뒤에 있는 배경 컬러값과 적당하게 컬러값을 섞어준다는 것을 의미합니다. 투명한 오브젝트를 그릴때 배경이 미리 그려져있어야 하기 때문에 , 렌더링 순서가 관련이 있습니다. 오브젝트 렌더링 순서는 다음과 같습니다. 불투명한 오브젝트 -> 뒤에있는 반투명 오브젝트 -> 앞에있는 반투명 오브젝트 불투명한 오브젝트는 Z buffer로 픽셀에 그려야 할지 말지를 알수가 있습니다. 그래서 렌더링 순서가 상관이 없지만 반투명 오브젝트는 반투명된 부분의 컬러값이 뒤에있는 배경과 블렌딩(알파블렌딩)이 되어야 하기 때문에 반드시 뒤에서 부터 그려져야 합니다. 그래서 소팅이 필요한데요 알파 소팅은 오브젝트의 중심점과 카메라의 거리.. 2023. 11. 20.
4. Cubemap을 사용하여 반사매질을 표현해보자. 큐브 맵은 Sky box에서 사용하기도 하지만, 큐브 맵 텍스처를 일반 오브젝트에 반사재질로 사용하면, 오브젝트에서 하늘에 반사되는 효과를 볼 수 있습니다. Cube map 텍스처를 사용하여 건물을 렌더링 해봅시다. 먼저 렌더링 패스를 이해해 봅니다. ======================================================= SurfaceShader 에서 Light를 표현할때, #pragma 에 Lambert를 추가해도 되지만, Custom Lighting을 하기 위해서는 Lighting + Custom API name 으로 #pragma 에 추가 한뒤, 함수 이름으로 정의를 하면 됩니다. 아래 예제에서는 함수 명이 LightingTest 이기 때문에 , #pragma Test를.. 2023. 11. 19.
3. Vertex Shader를 사용하여 Toon Shading 해보기 만화케릭터를 강조하기 위하여 외곽 효과를 주는 것을 toon shading, cell shding 이라고 합니다. 이번에 해볼 예제는 외곽선 그리기(toon shading) 입니다. 외곽선을 그리는 방법에는 림라이트 방법을 사용해도 되지만, 2 pass 렌더링 사용하는 방법도 가능합니다. 2 pass란 동일한 픽셀에 2번 렌더링 한다는 의미 입니다. 렌더링 한다고 해서 반드시 컬러값을 업데이트 하는 것은 아닙니다. 프래그먼트 쉐이더에서 아무일도 하지 않으면 변화가 없어 보입니다. 그러면 왜 하느냐? 백버퍼에 특정 값을 기록하여 진짜 렌더링하는 패스에서 해당 값을 사용하기도 하며, 이번 예제처럼 덧그리기도 할수도 있습니다. 그럼 2 pass 렌더링을 해보러 가봅시다. 원리를 먼저 생각해보면요 사각형이 그려.. 2023. 11. 14.