꾸준히 개발하자

고정 헤더 영역

글 제목

메뉴 레이어

꾸준히 개발하자

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (115)
    • Computer Graphics (58)
      • SCOP (9)
      • HumanGL (9)
      • Graphics Pipeline (10)
      • ALEngine (21)
      • Hiking (9)
    • 자료구조와 알고리즘 (43)
      • 백준 (14)
      • 자료구조, 알고리즘 (29)
    • Java 공부 (5)
      • Java 공부 (1)
      • Java 주차별 공부 (3)
      • 더 자바, 코드를 테스트하는 다양한 방법 (1)
    • 리눅스 (8)
      • 리눅스 기초 (8)

검색 레이어

꾸준히 개발하자

검색 영역

컨텐츠 검색

전체 글

  • FT_Newton: Narrow Phase / SAT vs GJK - (5)

    2025.01.15 by Banjosh

  • FT_Newton: 『게임 물리 엔진 개발』 vs Box2D - (4)

    2025.01.15 by Banjosh

  • FT_Newton: Initialization, Integrate, Broad Phase - (3)

    2025.01.10 by Banjosh

  • FT_Newton: 물리 엔진 개요 - (2)

    2025.01.10 by Banjosh

  • FT_Newton: Vulkan 공부 및 리팩토링 - (1)

    2025.01.06 by Banjosh

  • FT_Newton: 나만의 물리 엔진 제작 - (0)

    2025.01.06 by Banjosh

  • Pixel Processing - Merging

    2024.11.30 by Banjosh

  • Pixel Processing - Fragment Shading

    2024.11.30 by Banjosh

FT_Newton: Narrow Phase / SAT vs GJK - (5)

Broad Phase와 Narrow Phase를 살펴보기 전에, Broad Phase에 대해 간단히 상기해보자.Broad Phase모든 물체의 충돌 범위를 AABB(축 방향 정렬된 박스)로 설정한다.Integrate 단계 이후, AABB 범위가 겹치는 물체들을 충돌 쌍으로 만들어 Narrow Phase에 전달한다.Narrow PhaseBroad Phase에서 만들어진 충돌 쌍은 AABB의 넓은 범위를 기준으로 설정되었기 때문에, Narrow Phase에서는 더 정밀한 충돌 감지를 진행한다.이 과정에서 실제 충돌이 확정되면 접촉점, 침투 깊이, 충돌 방향에 대한 정보를 계산하여 Solve 단계로 넘겨준다.Narrow Phase를 진행하기 위해서는 먼저 실제 충돌인지 여부를 감지하는 알고리즘이 필요하다.대표..

Computer Graphics/ALEngine 2025. 1. 15. 17:13

FT_Newton: 『게임 물리 엔진 개발』 vs Box2D - (4)

Narrow Phase와 Solve 단계를 설계하면서 『게임 물리 엔진 개발』 책과 Box2D 코드를 함께 참고해보았다. 사실 물리 엔진은 정해진 구현 방식이 따로 있는 것이 아니기에, 두 자료에서 제시하는 구현 방법이 다를 수밖에 없었고, 그중 하나를 골라 적용해야 했다. 먼저 각 방법의 특징을 요약해보자.1. 『게임 물리 엔진 개발』이 책에서는 대략 아래와 같은 흐름으로 충돌을 처리한다.Broad Phase에서 추려진 충돌 쌍을 Narrow Phase에서 실제 충돌인지 판별실제 충돌로 확인되면 해당 충돌에 우선순위 점수를 설정모든 충돌을 우선순위 큐에 삽입우선순위가 높은 충돌부터 순서대로 처리충돌 처리 후 오브젝트가 움직이면서 새롭게 발생한 충돌들은 다시 우선순위 큐에 삽입이 과정을 정해진 횟수(예:..

Computer Graphics/ALEngine 2025. 1. 15. 16:02

FT_Newton: Initialization, Integrate, Broad Phase - (3)

이번 글에서는 팀원이 구현한 부분인 Initialization, Integrate, 그리고 Broad Phase 단계를 간단히 살펴보려 한다. 물리 엔진의 큰 틀에서 이 단계들은 초기화와 첫 번째 물리 연산 루프에 해당한다.Initialization - World물리 엔진의 초기화 단계는 물리 연산이 이루어질 환경을 설정하는 과정이다. 이 중에서도 가장 중요한 World 클래스 설계부터 살펴보자.World 클래스class World{ public: World(uint32_t size, App &app); ~World(); void startFrame(); void runPhysics(); // ... ContactManager contactManager; App &app; private..

Computer Graphics/ALEngine 2025. 1. 10. 13:11

FT_Newton: 물리 엔진 개요 - (2)

물리 엔진을 설계하기 전, Box2D 코드를 분석하고 『게임 물리 엔진 개발』 책을 통해 기본 개념을 공부했다. 덕분에 물리 엔진의 구조를 어느 정도 이해하고 큰 틀을 잡을 수 있었다.결론적으로, 물리 엔진의 큰 흐름을 이해할 수 있었다.물리 엔진의 구조Initialization (초기화)렌더링 루프에 들어가기 전, 물리 엔진이 작동할 환경을 설정하는 단계Generate World물리 엔진이 작동하는 세계를 생성.World 내부에는 물리 처리를 위한 여러 객체가 존재한다.Rigidbody: 물체의 물리 속성을 관리.Fixture: 충돌 감지와 관련된 데이터.Shape: 물체의 모양 정보.Proxy: Broad Phase를 위한 데이터.Generate Tree For Broad PhaseBroad Phas..

Computer Graphics/ALEngine 2025. 1. 10. 11:47

FT_Newton: Vulkan 공부 및 리팩토링 - (1)

이번 프로젝트부터는 OpenGL 대신 Vulkan API를 사용하기로 했다. OpenGL과 Vulkan을 비교하며 어떤 차이가 있는지, 그리고 실제로 사용하면서 느낀 점들을 정리해보자. Vulkan과 OpenGL둘의 차이를 쉽게 말하면, Vulkan은 개발자가 직접 해야 할 일이 많은 대신 성능에서 이득을 볼 수 있고, OpenGL은 자동으로 처리해주는 부분이 많아 개발 편의성이 높지만 그만큼 오버헤드가 있다. 아래의 간단한 비교를 통해 이를 확인해보자.OpenGLVulkan에 비해 고수준 API로, 드라이버 내부에서 작업을 자동으로 처리기본적으로 단일 스레드로 설계드라이버가 많은 작업을 자동 처리하기 때문에 오버헤드가 높을 수 있음메모리 관리를 자동으로 처리VulkanOpenGL에 비해 저수준 API로..

Computer Graphics/ALEngine 2025. 1. 6. 12:46

FT_Newton: 나만의 물리 엔진 제작 - (0)

FT_Newton는 4명이서 진행 중인 게임 엔진 프로젝트의 물리 엔진 파트다. 원래는 OpenGL을 사용해왔지만, 이번에는 Vulkan을 사용해 물리 엔진을 만들기로 결정했다. 사실 블로그에 작업 과정을 정리하는 게 조금 늦어져버렸는데, 이제라도 어느 정도 완료된 부분들을 정리해보려고 한다.Vulkan 공부지금까지 프로젝트에는 OpenGL을 사용했지만, 최종적으로는 Vulkan 기반 엔진이 목표라 Vulkan으로 전환했다. Vulkan은 OpenGL보다 저수준 API라 GPU에 원하는 작업을 더 디테일하게 지정해줄 수 있고, Fence나 Semaphore 같은 동기화 도구를 통해 멀티 스레드 렌더링이 가능하다는 장점이 있다. 물리 엔진의 구조 공부Vulkan 공부를 마친 후, 물리 엔진 자체를 잘 몰라..

Computer Graphics/ALEngine 2025. 1. 6. 11:16

Pixel Processing - Merging

Pixel Processing의 마지막 단계: Merging이번에는 Pixel Processing의 마지막 단계이자 Graphics Pipeline의 최종 단계인 Merging에 대해 알아보자.Merging 단계는 픽셀별 프래그먼트 값을 테스트와 블렌딩 과정을 거쳐 최종적으로 프레임 버퍼(Frame Buffer)에 기록하는 작업을 수행한다.이 단계는 Test 단계와 Blend 단계로 나뉘며, 테스트가 먼저 수행된 뒤 블렌딩이 진행된다.Merging 단계의 구성Test 단계Test 단계는 Fragment Shading 단계에서 생성된 프래그먼트들 중 특정 조건을 통과하지 못하는 프래그먼트를 삭제하는 역할을 한다.보통 아래의 순서대로 테스트가 진행된다 1. 스크리닝 테스트 (Scissor Test)Sciss..

Computer Graphics/Graphics Pipeline 2024. 11. 30. 15:16

Pixel Processing - Fragment Shading

Pixel Processing의 첫 번째 단계: Fragment Shading이번에는 Pixel Processing 단계의 첫 번째 단계인 Fragment Shading에 대해 알아보자.Fragment Shading은 Rasterization 단계에서 생성된 프래그먼트들의 최종 색상 및 속성을 계산하는 단계이다.이 단계에서는 조명, 텍스처 매핑 등 다양한 계산이 이루어진다.Fragment Shading의 역할Fragment Shading은 각 프래그먼트의 최종 속성을 결정하는 과정으로, 우리가 보통 작성하는 Fragment Shader를 통해 구현된다.조명, 텍스처, 반사, 굴절 효과 등 다양한 계산을 수행하며, 이를 통해 다양한 그래픽 효과를 만들어낼 수 있다.아래는 Fragment Shader에서 구..

Computer Graphics/Graphics Pipeline 2024. 11. 30. 14:42

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 5 6 7 ··· 15
다음
TISTORY
꾸준히 개발하자 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바