[C++ Korea] 2023 Meet-Up(06월)

박현우·2023년 8월 16일
0

C++ Korea Meet-Up

목록 보기
3/4

[C++ Korea] 2023 Meet-Up(6월)

D3D Tiled Resources를 이용한 텍스처 스트리밍

발표자: 유영천

  • 맵의 텍스처링 방법

    • 넓은 맵의 베이스 텍스처를 사용 -> 타일처럼 패턴이 보이게 됨.
  • 거대 텍스처 맵핑의 특성

    • 언제나 텍스처의 모든 영역이 한 번에 보여지는 것이 아님.
    • 가까운 곳은 높은 해상도, 멀 수록 낮은 해상도
  • 가상 텍스처링

    • 가상 메모리..?
    • DX11 이상부터 지원
    • GPU에서 가상 메모리는 OS에서 관리하지 않기 때문에 프로그래머가 관리해야 함.
    • 민맵?
    • Packed Mip
    • Tiled Pool
      • 페이지 관리
      • 프로그래머의 몫
        • 예) 인덱스 발급기 이용(맵핑)
        • 삭제 됐을 때, 메모리에 이가 빠지게 됨(배열).
        • 이가 빠진 곳을 활용하지 않으면 메모리 낭비 -> 효율적으로 관리하기 위해 인덱스로 관리
  • File로 부터 읽어 이미지 데이터 로드

    • 파일 헤더를 읽어 위치 확인
    • 필요할 때, 헤더를 이용해 참조
  • GPU 프로그래밍의 경우 로직에 따라 성능의 차이가 심함.

C++을 버린 유저가 이야기 하는 C++가 지향해야 하는 모습은?

발표자: 김두훈

  • 왜 C++는 어려운가?

    • 너무 자유롭다 == 너무 높은 난이도
      • 템플릿
      • 컴파일러 설정
      • 코루틴
  • 따라가기 힘든 표준

    • Peprecated, Feature가 추가되는게 너무 극단적으로 많음
      • 시간이 지날 수록 추가되는 양이 많아짐...
  • 극악의 방대함, 더딘 지원

    • 지속적인 발전으로 기능은 방대해졌지만 컴파일러 지원이 늦음
  • 그래서 지향해야 하는 것은?

    1. 퍼포먼스와 엄밀함 보다는 "사용성
    • 패키지에 대한 에코-시스템
      • vcpkg
      • conan
    1. 사용자 친화적
    • 이제 하위 호환성을 놓아줄 때가 됐다(이미 망한거 같으니...).
    • 한국에서 C++ 커뮤니티가 부족함.

클래스를 쓰지 않고 게임 개발하기 (ECS를 통한 게임 개발)

발표자: 옥찬호(@utilForever)

  • ECS(Entity Component System)

    • 상태와 기능을 분리

    • 구성 요소

      • Entity(포인터)
        • 컴포넌트를 담아두는 곳
        • 행동(기능)이나 데이터 X
        • 어떤 데이터가 있는지 식별
      • Component(실제 데이터)
        • 실제 데이터를 저장하는 곳
        • 단순 태그, 값을 저장하는 컨테이너, 무언가를 참조하는 컨테이너 등
      • System
        • 컴포넌트의 데이터를 현재 상태에서 다음 상태로 변환하는 논리
        • 전체 인티티 중 특정 컴포넌트를 가리키는 엔티티만 필터링한 다음, 컴포넌트와 관련해 필요한 동작 수행
          • 데이터 변경
          • 새로운 컴포넌트 추가
          • 기존 컨테이너 삭제
      • 왜 사용하는가?
        • 객체지향에 비해 성능이 뛰어나다.
        • 데이터 지향 디자인
        • 지역성(Locality) 개념
          • 캐시가 효율적으로 동작하려면, 캐시에 저장할 데이터가 지역성을 가져야 함.
          • 지역성이란 데이터 접근이 시간적, 공간적으로 가깝게 일어나는 것.
          • 공간 지약성
            • 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우 공간적 지역성이라고 한다.
          • 객체지향의 경우 이 공간 지약성이 떨어진다.
    • ECS 라이브러리

      • C++
        • entt
          • 마인크래프트 및 마인크래프트 어스에서 사용
        • entityX
        • Ffles
  • 데모

    • 2021-CoMu-ECS-Development
    • 엔티티에서는 컴포넌트가 어떤 것인지 구별할 수 없기 때문에 태그 컴포넌트를 이용해 탐색용으로 사용함
  • 정리

    • ECS는 데이터 지향 디자인을 통해 특정

커뮤니티의 어제와 오늘

발표자: 방기연(@giyeonbang)

profile
C++, C#

1개의 댓글

comment-user-thumbnail
2023년 8월 16일

글 재미있게 봤습니다.

답글 달기