전체 글 18

소프트웨어 렌더러 만들기 - 7 (직선 그리기)

여기까지의 작업내용: https://github.com/hwi-middle/HimchanSoftwareRenderer/tree/3c741c781e32f772d56da936a6d7e51f08b4d452 GitHub - hwi-middle/HimchanSoftwareRenderer: C++로 구현한 소프트웨어 렌더러입니다. C++로 구현한 소프트웨어 렌더러입니다. Contribute to hwi-middle/HimchanSoftwareRenderer development by creating an account on GitHub. github.com Graphics 모듈 추가 뭔가 화면에 그려주는 처리 같은걸 어디서 해줄까 고민을 하다가 HCGraphics라는 모듈을 하나 추가해줬다. 이번에 구현한 직선을 ..

소프트웨어 렌더러 만들기 - 6 (다양한 크기의 Vector와 Square Matrix)

여기까지의 작업내용: https://github.com/hwi-middle/HimchanSoftwareRenderer/tree/ce2dd7eae5a67e2c5af487c7a53f9d28351fd1b4 GitHub - hwi-middle/HimchanSoftwareRenderer: C++로 구현한 소프트웨어 렌더러입니다. C++로 구현한 소프트웨어 렌더러입니다. Contribute to hwi-middle/HimchanSoftwareRenderer development by creating an account on GitHub. github.com 게으르게 좀 놀았습니다 기말 시즌에 학기작 작업 바쁘게 마무리하고, 학생회도 마무리 짓고 하다보니 사이드 프로젝트에 대한 관심도가 자연스럽게 떨어졌다. 어쩌다보..

소프트웨어 렌더러 만들기 - 5 (Custom Assertion)

여기까지의 작업내용: https://github.com/hwi-middle/HimchanSoftwareRenderer/tree/f069823fcd73b59876f2b7fddf085b1d647bf826 GitHub - hwi-middle/HimchanSoftwareRenderer: C++로 구현한 소프트웨어 렌더러입니다. C++로 구현한 소프트웨어 렌더러입니다. Contribute to hwi-middle/HimchanSoftwareRenderer development by creating an account on GitHub. github.com Assertion 매크로 #pragma once #ifdef NDEBUG #define ASSERT(expression) ((void)0) #else #incl..

소프트웨어 렌더러 만들기 - 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 프로그램이 어떤 식으로 돌아가는지는 어렴풋이 기억하고 있고, 간단하게 픽셀 찍는 수준은 무리없다. 예제처럼 기본적으로 픽셀을 찍는 단계부터 쌓아올려갈 예..