전체 글86 Design Pattern(2-2) 경량 패턴(Terrain) 이 포스팅을 통해 경량 패턴을 사용하는 이유에 대해 알아봤습니다. https://savinglectures123.tistory.com/35 Design Pattern(2-1) - 경량 패턴(Flyweight) 원리흔히 말하는 대작 게임들을 보면, 엄청난 그래픽과 사실성으로 유저들의 시선을 끌어당깁니다. 대작 게임의 나무, 잔디 하나하나 보면 어딜 봐도 High-Quality입니다. 제가 이런 배경savinglectures123.tistory.com 이번 포스팅에서는 경량 패턴을 이용해 어떻게 지형 정보를 효율적이게 구하는 지에 대해서 알아보겠습니다. 게임에서는 나무를 심을 땅도 표현해야 합니다. 보통 산, 강, 흙, 돌밭 같은 다양한 지형을 이어 붙여서 땅을 만듭니다. 이 포스팅에서는 땅을 타일 기반(전.. 2024. 8. 2. Design Pattern(2-1) - 경량 패턴(Flyweight) 원리 흔히 말하는 대작 게임들을 보면, 엄청난 그래픽과 사실성으로 유저들의 시선을 끌어당깁니다. 대작 게임의 나무, 잔디 하나하나 보면 어딜 봐도 High-Quality입니다. 제가 이런 배경들을 잔디 대신 나무로 한번 만들어보고 싶어서 나무를 한 100개 정도최적화 없이 for문을 돌려 나무를 그렸다고 가정해보겠습니다. 음.. 60fps 에서 5fps이 되어 버렸군요. 뭐 다양한 문제가 있었겠지만 기본적으로 똑같은 나무들을 계속 생성했었죠.이게 왜 문제가 되냐? 할 수도 있지만 게임은 최소로 최적화한다 해도 1초에 60번씩 GPU에 전달해야 합니다. 이 때 몇백만 개의 폴리곤을 쌩으로 그린다면? 당연히 프레임이 엄청나게 떨어질 것입니다. 설사 메모리가 100GB라고 할지어도 그래픽스 프로그래밍은 GPU에.. 2024. 8. 2. Design pattern(1-2) - 명령 패턴(undo, redo) 이전 포스팅입니다.https://savinglectures123.tistory.com/31 Design pattern(1-1) - 명령 패턴(command)명령 패턴이란? 쉽게 설명한다면 '메서드 호출을 실체화 한것'입니다.실체화는 실체하는 것(인스턴스)을 만든다는 의미이며, 변수에 저장하거나 함수에전달할 수 있도록 데이터, 즉 객체로 바savinglectures123.tistory.com 이전 포스팅에서 만든 Command는 Jump()같은 Command가 아닌다른 방법으로도 패턴을 사용할 수 있습니다. 바로 실행취소(undo) 와 재실행(redo)가 있습니다.실행취소는 원치 않는 행동을 되돌릴 수 있는 전략 게임에서 볼 수 있습니다.게임 개발 툴(에디터, 임구이 등) 단연 에서 필수입니다.(필자는 .. 2024. 8. 1. Design pattern(1-1) - 명령 패턴(command) 원리 명령 패턴이란? 쉽게 설명한다면 '메서드 호출을 실체화 한것'입니다.실체화는 실체하는 것(인스턴스)을 만든다는 의미이며, 변수에 저장하거나 함수에전달할 수 있도록 데이터, 즉 객체로 바꿀 수 있다는 걸 의미합니다. 명령 패턴은 '메서드 호출을 객체로 감싸는 것'을 의미합니다. 이는 함수 호출을객체로 캡슐화하여, 나중에 그 작업을 실행할 수 있도록 합니다. 이 패턴은콜백과 유사하지만, 콜백은 주로 비동기 상황에서 특정 이벤트를 처리할 때 사용합니다. 명령 패턴을 요약하자면 함수가 하는 명령(커맨드)를 인스턴스로 실체화하여객체에게 함수가 하는 일을 맡기는 것입니다. 이제 명령 패턴이 어떻게 쓰이는지 알아봅시다. 입력키 변경 콘솔의 입력을 읽는 코드가 있고 그 코드를 호출한다고 가정해봅시다. 간단하게 구.. 2024. 7. 30. Rasterization(10) - 조명 이번 포스팅에서는 Point light, Spot light 에 대해 알아보겠습니다. 개요재질만큼 중요한 조명에 대해 알아봅시다. 기본적으로 Directional light, Point light, Spot light가 있습니다. Rasterization을 사용하는 Real-time graphics 에서는사실성보다는 속도가 아주 중요했습니다. 즉, 그래픽 연산을 얼마나 적게해서 그럴 듯하게 만드냐에 초점이 있었습니다.Directional light태양같이 아주 멀리 있는 광원을 가정합니다. 광원은 아주 멀리있다고 정의하기 때문에 광선들은 서로 평행합니다.Point lightPoint Light는 점에서 사방으로 퍼져나가는 광원을 말합니다.대표적으로 전구가 있고, 이 광원이 어디있는 지가 중요합니다.광원이.. 2024. 7. 28. Rasterization(9) - 블린-퐁 쉐이딩 버텍스 쉐이더에서 버텍스 색을 결정하는 방법이 있고, 픽셀 쉐이더에서 계산하는 방법이 있습니다. 그렇지만 픽셀을 하나하나 계산하는 것보다 버텍스 쉐이더에서 색을 결정하는 것이 빠릅니다. 대신 렌더링 품질이 떨어집니다. 그래서 요즘에는 GPU가 워낙에 빠르기 때문에 픽셀 쉐이더에서 색을 결정하는 일이 많아졌습니다. 퐁 쉐이딩을 기반으로 블린-퐁 쉐이딩의 원리를 알아볼 예정입니다. 기본적으로 퐁 쉐이더는 ambient, diffuse, specular로 나누어져 있습니다.ambient는 조명과 상관없이 그 색을 픽셀 쉐이더에서 return 해주면 됩니다. 모든 픽셀의 색을 다 같은 색으로 만들면 입체감이 없어지게 됩니다. 3차원 그래픽에 ambient가 있어야 되는 이유직접적으로 오는 조명과 고려한다면 빛을.. 2024. 7. 28. 이전 1 ··· 7 8 9 10 11 12 13 ··· 15 다음