2023/10 5

소프트웨어 렌더러 만들기 - 4 (Math헤더 보강)

여기까지의 작업내용: https://github.com/hwi-middle/HimchanSoftwareRenderer/tree/0a71d0b0df0a0bb7648bcd3d6618afa300d0ea9f GitHub - hwi-middle/HimchanSoftwareRenderer: C++로 구현한 소프트웨어 렌더러입니다. C++로 구현한 소프트웨어 렌더러입니다. Contribute to hwi-middle/HimchanSoftwareRenderer development by creating an account on GitHub. github.com 상수 추가 static constexpr float PI = 3.1415926535897932f; static constexpr float TwoPI = 2 *..

소프트웨어 렌더러 만들기 - 3 (스크린 좌표계, 출력 영역 조정)

여기까지의 작업내용: https://github.com/hwi-middle/HimchanSoftwareRenderer/tree/9319547dcbf3a0961f261d0d2c9e165bb4f8e04d GitHub - hwi-middle/HimchanSoftwareRenderer: C++로 구현한 소프트웨어 렌더러입니다. C++로 구현한 소프트웨어 렌더러입니다. Contribute to hwi-middle/HimchanSoftwareRenderer development by creating an account on GitHub. github.com 스크린 좌표계 ↔ 데카르트 좌표계 변환 struct ScreenPoint { FORCEINLINE static Vector2 ScreenToCartesian(c..

소프트웨어 렌더러 만들기 - 2 (Vector2 클래스 및 프로젝트 설정)

여기까지의 작업내용: https://github.com/hwi-middle/HimchanSoftwareRenderer/tree/0ebcba6de8f053600a872c3044c2cca371b7b58d GitHub - hwi-middle/HimchanSoftwareRenderer Contribute to hwi-middle/HimchanSoftwareRenderer development by creating an account on GitHub. github.com Vector2 클래스 구현 이번에는 2차원 벡터인 Vector2 클래스를 구현했다. 이 간단한 클래스 하나 구현 하는데에도 많은 걸 배웠는데, 배운 것을 블로그에 기록하기로 다짐해서 참 다행이라고 느꼈다. 특히 언리얼 엔진의 코드를 들여다보는 ..

소프트웨어 렌더러 만들기 - 1 (픽셀 찍기, 콘솔창 활성화)

일단 가장 기초적인 것. 픽셀 찍고 디버깅을 위한 콘솔창 활성화하기. SetPixel(hdc, 10, 10, RGB(255, 0, 0)); 일단 픽셀은 그냥 이렇게 찍으면 된다. WinAPI에서 쓰던 그대로... #ifdef _DEBUG #pragma comment(linker,"/entry:WinMainCRTStartup /subsystem:console") #endif 그리고 디버그 환경에서 콘솔창을 띄우려면 이렇게 해주면 된다. 디버그 환경에서 조건부 컴파일로 들어간다. 하찮게 찍힌 빨간 픽셀 2개와 콘솔창.

소프트웨어 렌더러 만들기 - 0 (시작하며)

개발 블로그를 만들었다. 그건 둘째치고. 블로그의 첫 번째 게시물은 소프트웨어 렌더러(이하 '소프트 렌더러')를 만들겠다는 야심차고 퍽 건방진 이야기를 늘여놓으려한다. 소프트 렌더러를 만들기 위해서는 선형대수 같은 수학적 지식도 필요할 것이고, 프로그래밍 지식도 필요할 것이다. 일단 게임수학 쪽으로는 이미 명저로 꼽히는 이라는 책이 있기 때문에 많은 도움이 될 것이다. 애초에 의 실습이 소프트 렌더러로 수학적인 개념을 직접 구현해보는 것이기 때문에 코드도 많이 참고할 수 있겠다. 프로그래밍적으로는 1학년 2학기에 WinAPI를 배웠기 때문에 WinAPI 프로그램이 어떤 식으로 돌아가는지는 어렴풋이 기억하고 있고, 간단하게 픽셀 찍는 수준은 무리없다. 예제처럼 기본적으로 픽셀을 찍는 단계부터 쌓아올려갈 예..