본문 바로가기

전체 글304

게임지식-Isometric? 참여하는 프로젝트에서 맵을 isometric 형태로 제작할 것 같아서 해당 부분의 정보에 대해 잠시 기록해두려고 한다. 0. Isometric의 정의 1. 목적 2. 구현 방식 0. Isometric? 0.0. Projection 방식 (+Projection : 3차원 물체를 2차원에 보여지게 하는 방식.) Isometric과 같이 세 면이 다 보이는 방식에는 총 3종류가 있다. - 화면에 투영되었을 때 수평선을 기준으로 대칭되는 각도, 엣지의 길이에 따라 Projection 종류가 결정된다. (가장 정석적인 Isometric Projection은 잘 사용하지 않고, 일반적으로 그래픽의 비율을 2:1 형태로 압축해서 사용된다.) 직관적으로 Projection 구분 방법 : 가장 쉬운 방법은 게임 내 정사.. 2024. 3. 28.
C++/Rust/기타등등 프로젝트 하고싶은거 모음집.. 로우 레벨 언어를 좀 더 잘 이해하고 사용하고 싶어서 학습용 프로젝트들을 미리 작성해놓기 위함이다. 1. 컴파일러 만들기 - c++ 학부때 컴파일러 수업때 내용을 잘 이해하지 못한 거 같아서 다시 만들어보고 싶다. 2. 알고리즘 문제풀이 사이트 만들기 - Rust 다른 프로젝트때 다른 분들이 하시는 걸 보고 해보고 싶어서 넣었다. 러스트로 알고리즘 문제풀이 엔진 만들어보고싶다. 3. 그래픽스 엔진 만들어보기 - c++ 프로토타입으로 만들어보고 게임엔진 아키텍쳐 공부를 하고 좀 더 수정하고 싶다. 4. ZIO 라이브러리 사용해보기 스칼라 찍먹이 궁금해서 넣었다. --to be continued....-- 2024. 3. 23.
쉐이더 심화학습 07-디퓨즈 라이팅(디퓨즈 라이팅 구현 및 림 라이트 효과) 해당 부분에서는 공부했던 normal vector, 라이팅 연산을 적용한 라이트 효과들을 구현해보겠다.  6. 디렉셔널 라이트(directional light)7. 림 라이트 효과            6. 디렉셔널 라이트(directional light)shader이 라이트 정보를 사용하도록 구현하는 것이 목표이다. 6.1. 디렉셔널 라이트= 태양처럼 멀리 떨어져 있고, 하나의 방향으로 일률적으로 빛을 보내는 광원.= 모든 오브젝트가 동일한 방향으로부터 오는 동일한 양의 라이트를 받는다. 6.2. 디렉셔널 라이트 설정 6.2.1. 라이트 정보 구성= 필요한 데이터를 2~3개의 변수로 구성해 cpp에 구조체를 만든다. ofApp.hstruct DirectionalLight{ glm::vec3 dire.. 2024. 3. 21.
쉐이더 심화학습 07-디퓨즈 라이팅(normal vector를 적용한 라이팅 계산) mesh 표면에 색상을 입히는 방법에 대해 배워볼 것이다.     0. 라이팅 계산1. shading 종류-부드러운 shading, 평평한 shading2. 월드 공간에서 뒤섞기(Swizzle) 연산자 적용3. 노말 행렬(normal matrix)4. 라이팅 계산과 노말5. 내적을 사용한 shading         0. 라이팅 계산0.1. 이전에 사용한 색상 입히는 방법= texture을 입히는 방법 사용 불가. (texture이 없기 때문)= mesh의 UV는 자연스럽지 않음. (quad처럼 연속적이며 점진적으로 변하지 않기 때문) 0.2. 라이팅 계산= 노말 벡터(normal vector)라는 새로운 vertex 속성에 의존한다.(normal vector : mesh 표면과 직각으로 교차하면서 me.. 2024. 3. 20.