공지사항

최신 글

소프트웨어 렌더러 개발일지 Software Renderer #1 안녕하세요. 두번째 소프트웨어 렌더러 개발일지입니다. 이번에는 좀 기능을 많이 추가했습니다. 우선 눈에 먼저 보이는 텍스쳐기능을 추가했습니다. 사실 버그가 있습니다. 사진에도 살짝나왔는데, 시야를 회전하면 텍스쳐가 살짝 일그러져보입니다. ㅠㅠ.. 아직까지 원인은 모르겠으나 계속 찾아볼예정이고, 사실 뷰->투영해주는부분에서 튀어나온 z값을 통해 z버퍼를 갱신해줘야하는데, 이부분을 대충만들어서 좀더 보완할예정입니다. 흠... 그나저나 텍스쳐일그러져보이는이유는 진짜 모르겠네요. 킹론상 완벽한데.. 뭐지... 이론대로 구현했는데 이상하게나오네.. 음... 그리고 깜빡하고 후면선별하는기능을 빼먹어서 이것도 추가할예정이예요(생각만해도 나를 힘들게하고 한숨이 푹푹쉬어지는 그런 느낌,,,...). 그리고 무엇보다 CP.. 개발일지 2024.03.23  0
소프트웨어 렌더러 개발일지 Software Renderer #0 오랜만에 개발과 관련된 글을 쓰게되었다. 중간중간에 생존신고를 하긴했지만, 사실 지난 2022년겨울부터 2024년1월까지 입시공부를 하느라 노트북에도 손을 거의 아예 안댔고, 비쥬얼스튜디오는 당연히 구경도 못했다. 그때 당시에 정말 간절했기에 프로그래밍을 하고싶은마음은 아예없었다. 그래서 블로그 글 포스팅도 매우 소홀히 했었고, 거의 블로그 자체에 신경을 하나도 안쓰는 시간이었다. 올해하반기에도 간절한시험이 존재하기때문에 6~7월부터 잠수를 탈예정이지만(크흠...) 그때까지는 프로그래밍공부를 할 시간이 얼마든지 존재하기에 이렇게 소프트웨어 렌더러 개발에 관한 계획을 짜게되었다. 사실 이 글을 쓰는시점에서 이미 대략적으로 모양이 나온상태이긴하다. 우선 테스트로 평면사각형하나랑 직육면체 하나씩 해서 총 2개.. 개발일지 2024.03.17  0
O(1) 거듭제곱과 바빌로니아 법 알고리즘의 해석 오랜만에 올리는 글인데, 별로 실용성이 없는글이기도하고 시간이 많지 않기때문에 빠르게 설명만 하겠습니다. 우선 이에 대한 이야기는 2년전에 올렸었는데요. 이에 대해서 좀더 보완되고 해석적인 방법을 통해 설명드리려고 왔습니다. https://mawile.tistory.com/183 제곱, 제곱근 구현하기 우선은 제곱근은 바빌론방법을 사용하였고, 제곱은 dp를 사용했습니다. 사실 제곱을 일반적으로 구현하면, 시간복잡도가 O(n)이 되는데, 저가 사용한 방법은 dp입니다. 시간복잡도는 예를들어서, mawile.tistory.com O(1) 거듭제곱 구현 알고리즘 우선 거듭제곱의 구현은 자연로그의 성질을 이용해서 O(1)로 구현이 가능합니다. 다음 a의 b제곱인 수 k가 있다고 가정해봅시다. 우리가 결과적으로 .. 카테고리 없음 2023.11.13  1
생존여부 최근에 공부때문에 바빠서 글을 못썼네요. 오랜만에 와보니까 방문해주신분들도 많아지고 기운이 생기는것 같아요. 2024년 2월달까지만 빡쎄게 공부하다가 다시 컴퓨터그래픽스와 기술관련 글들로 글쓰러 오겠습니다. 최근에 저도 컴퓨터를 못잡아서 2월달되면 저도 재활도 좀 하고 그래야겠네요 ㅋㅋ.. 운안좋으면 안돌아올 가능성도.. 일단 개인적으로 하고싶은것들이나 만들고싶은것들은 많은데(복소해석학, 기초 유체역학, 복셀 게임엔진등등) 지금은 우선순위가 제일 높은 공부를 끝마치는게 중요해서 2월달까지만 잠수타겠습니다.. 감사합니다 (^_____^) 🧨공지사항및 잡담 2023.10.30  0
방학에 할일 정리 2 (수정: 2022-12-29) 1달여만에 포스팅을 하네요. 최근에 몸살기운도 심했고, 저번주에 시험이 설상가상으로 겹쳤었는데 마침내 끝나서 좀 숨통이 트이더라구요 ㅋㅋ 몸살기운도 어제부터 괜찮아졌어요. 내년하반기에 군대갈생각이 있기때문에, 이제 슬슬 제대로 된 포트폴리오를 설계해볼까 하는 생각이 들기도하고, 이번 겨울학기도 알차게 보내자라는 생각이 들었습니다. 사실 저는 메모개념으로 블로그에다가 이런글을 예전에도 올린적이 있었어요. (저가 몇달전에 블로그글을 엄청지웠던적이있었는데 이 글은 찾아보니까 살아남았네요.) https://mawile.tistory.com/342 방학에 할일 정리 해당 내용만 하자가 아니라, 최소 이거는 해놓자 입니다. [ 7월~8월 ] - Dx12 캐릭터 애니메이션 마무리 - DirectX12 UI & Fon.. 🧨공지사항및 잡담 2022.11.23  0
[번역강좌] 2. 조명 - 물리 기반 렌더링(Physically Based Rendering) 이전 장에서 우리는 현실적인 물리적 기반 렌더러를 지상에서 끌어내기 위한 토대를 마련했다. 이 챕터에서는 앞에서 논의된 이론을 직접(또는 분석적) 광원을 사용하는 실제 렌더러(점등, 방향등 및/또는 스포트라이트)로 변환하는 데 초점을 맞출 것입니다. 먼저 이전 장의 최종 반사 방정식을 다시 살펴보겠습니다. 우리는 이제 거의 무슨 일이 일어나고 있는지 알고 있지만, 여전히 크게 알려지지 않은 것은 우리가 어떻게 정확하게 방사광도, 즉 현장의 총 광도 L을 나타낼 것인가 하는 것입니다. 우리는 광도 L(컴퓨터 그래픽 랜드에서 해석된 바와 같이)이 주어진 고체 각도(또는 실각) ω에 대한 광원의 복사 유량 γ 또는 빛 에너지를 측정한다는 것을 알고 있다. 우리의 경우, 우리는 고체의 각도 ω가 무한히 작다고 .. 입문 2022.09.30  1
[번역강좌] 1. 이론 - 물리 기반 렌더링(Physically Based Rendering) 이론 PBR(Physical based rendering)은 물리적 세계와 거의 일치하는 동일한 기본 이론을 기반으로 하는 렌더링 기술의 집합이다. 물리적 기반 렌더링은 물리적으로 그럴듯한 방식으로 빛을 모방하는 것을 목표로 하기 때문에 일반적으로 퐁 및 블린-퐁과 같은 원래 조명 알고리듬에 비해 더 현실적으로 보입니다. 실제 물리학에 근접하기 때문에 더 좋아 보일 뿐만 아니라, 우리(특히 예술가)는 조명을 올바르게 보이게 하기 위해 값싼 해킹과 조정에 의존하지 않고도 물리적 매개변수에 기반한 표면 재료를 작성할 수 있습니다. 물리적 매개 변수를 기반으로 재료를 제작하는 데 있어 더 큰 장점 중 하나는 이러한 재료가 조명 조건에 관계없이 올바르게 보인다는 것입니다. 이건 PBR 파이프라인에서는 사실이 아.. 입문 2022.09.30  1
강체동역학 물리엔진 개발중... + 잡담 포폴용 계정에다가 영상 올려놨습니다. 영상 음.. 렌더러는 directx12랑 opengl4로 구성되어있고, 중간에 둘다 같은걸 썼다고 말하는데 같은 물리엔진(직접 만든거임..!!)을 사용했습니다. 수학라이브러리도 만들었는데, 사원수, 행렬, 벡터 등등이 포함되어있습니다. 이번에 강체동역학쪽 물리시뮬 만들면서 느낀게, 동역학 시뮬레이터는 물리지식10%에 수학지식90%구나~~ 라는걸 강렬하게 느꼈어요. 사실, 미완성이기때문에 계속해서 만들어나갈것입니다. ps. 사실 이 포폴용계정은 나중에 포트폴리오같은거 만들때 영상같은거 올리려고, 또는 제 취업준비용입니다. 물리엔진 개발공부 2022.09.09  0
DirectX12에서 텍스트를 렌더링하는 2가지 방법 소개 안녕하세요. 오랜만에 강좌글이 돌아왔습니다 ..! 강좌라기보다는 방법론에 관한 글이라고 하는게 더 정확하겠군요. 이번 포스팅에서는 DirectX12에서 직접 사용자정의 폰트를 통한 텍스트를 출력하는 방법에 관하여 알아보겠습니다. 예를들어서 이런식으로요. 그러면.... 바로 시작하겠습니다..!! 1번째방법. 메쉬위에 텍셀좌표를 조절해서 그리기 이 방법은 우선, 직접 해야할것들이 많습니다. 대신 2번째방법보다 오버헤드가 훨씬 적으며, 좀더 세부적으로 글씨나 문자에 대하여 다룰수 있습니다. 이 방법은 우선 동적 정점버퍼를 가진 메쉬를 생성하는데에서 시작합니다. 1-1. 메쉬만들기 void BuildFont() { mFontData["original"] = TextFont::LoadFontData("fontda.. DirectX12 방법론 2022.08.08  1
프로그래밍 입문 하시는분들에게 이 글을 보러 오시는분들은 아직 프로그래밍을 어떻게 공부해야될지 방향성이 안잡하시는분들을 위한 글입니다. 물론 이 글은 저의 경험과 주관을 기반으로 작성된 글이기때문에, 맹신한다기보다는 참고정도로만 생각해주셨으면 좋겠습니다. 🥅 목표를 정하자 우선 프로그래밍 공부도 목표가 없으면 중간에 헤매게됩니다. 또, 목표가 없는 공부를 해도 헤매고 얼마못가 흥미가 점점 사라져서 오래 못갑니다. 프로그래밍 공부는 저가 생각하기에는 흥미를 못느끼면은 공부하기 어려운분야이라고도 생각합니다. 흥미를 느끼려면 저에게 뭔가 자극이 되는 요소가 필요한데요, 저는 자극이 되는 요소를 얻기위한 도구로 토이 프로젝트나, 공부가 있다고 생각하고 있습니다. 그리고 그러한 요소들을 기반으로 자신만의 목표를 정하는것이죠. 저가 흥미를 깊게.. 🧨공지사항및 잡담 2022.07.26  0
방학에 할일 정리 해당 내용만 하자가 아니라, 최소 이거는 해놓자 입니다. [ 7월~8월 ] - Dx12 캐릭터 애니메이션 마무리 - DirectX12 UI & Font 프로젝트 완성시키기 : DirectX12기반으로 UI와 폰트 생성하는 프로젝트임. 이거 만들어놓으면 앞으로 Dx12게임엔진 만들때 매우 유용하게 사용될것임. Github주소 -> https://github.com/orangelie/Dx12UIFont.git GitHub - orangelie/Dx12UIFont: DirectX12-based user interface and font. DirectX12-based user interface and font. Contribute to orangelie/Dx12UIFont development by creati.. 🧨공지사항및 잡담 2022.07.09  0
사원수(Quaternion) 챕터 끝.... 사원수(Quaternion)을 이용한 키프레임 애니메이션 실습이 끝났습니다. 제 깃허브에도 커밋해놨습니다. 후.... 드디어... 대망의 마지막챕터인 "캐릭터 애니메이션"이 남았네요.. 이 챕터는 스키닝메시(skinned mesh)를 이용하는것같드라구요!! 아 참고로 주변광차폐는 좀 양이 많아서, 캐릭터애니메이션 끝내고 할예정!! DirectX 12 개인공부 2022.06.29  0
나의 공부 로드맵 저의 공부로드맵은 계속해서 갱신되는중입니다. 이번에 몇달 더 공부해보면서 좀더 체계적이고 현실적으로 세워진 공부로드맵입니다. 밑에 색깔표시는 대략적인 수치이며, 정확한수치가 아닌 대략 저가 현재 여기까지는 나갔다.. 라고 말하는 수치입니다. 🧨공지사항및 잡담 2022.06.02  0
[물리엔진공부] 오일러-크로머 적분을 이용한 선형운동 시각화 이번에 저가 직접만든 자체게임엔진으로 처음 만들어본 물리 시뮬레이터는 제일 기초가되는 오일러-크로머 적분을 이용하여 만든 등가속도, 등속도운동 비교를 시각화했습니다. 극초반에는 등속도운동이 빠르다가, 점점 등가속도운동이 추월하는 모습.. 음... 이거 깃허브에 올려놓겠습니다. 소스보실분 보세요. (오픈소스임.) 아직은 물리엔진 제작 기초부분이라서 별대단한내용은 없습니당.. 다음번에는 Cannon(포탄발사)예제랑 포물선운동 예제만들어볼게요. 사실 Cannon예제는 이미 VPython에서 다 만들어놔서, 소스만 랩핑해서 옮기면됨~ Cannon예제는 좀 신기합니다. 기대해주세요 결과물은 이 부분입니당. https://github.com/orangelie/Physics-Modeling/tree/main/Phys.. 물리엔진 개발공부 2022.05.28  0
[물리엔진공부] 물리엔진을 위한 간단한 렌더링엔진 만들었습니다. 일단 이번에 물리시뮬 실습을 하는데, 저가 이전까지는 그냥 렌더링엔진 만들기귀찮아서, VPython으로 물리엔진공부했었는데, 이번에 아예 dx12기반으로 각잡고 만듦. 일단 이번에 만든 렌더링엔진의 주목적은, 물리엔진을 돌리는것과 간단하게 구현할수있어야하는것. 이기 때문에, 저는 진짜 엄청쉽게 만들수있도록 패턴을 설계함. 다음과같이 엄청간단히 위 게임을 만들수있었습니다. /* * * * Github: https://github.com/orangelie * // Copyright (C) 2022 by orangelie, Inc. All right reserved. * // MIT License * */ #include "SAMPLES/PhysicsEngine.h".. 물리엔진 개발공부 2022.05.28  1
[DirectX12] 노말맵핑 끝~ 쉽게 노말맵핑 비교하는걸 사진으로 찍었어요. 왼쪽이 노말맵핑 적용안한거고, 오른쪽이 노말맵핑 적용한거입니다. 차이가 느껴지시나요? 살짝더 불룩 튀어나와보여지는게 느껴지네용.... 다음은 그림자맵핑..... 그림자맵핑 살짝 흝어봤는데... 좀 빡쎌듯.. DirectX 12 개인공부 2022.05.20  0
[DirectX12] CCTV감시카메라, 물리시뮬레이터 2탄 만들었습니다. 오늘은 졸린관계로.. 영상만 올리고 빠지겠습니다.. 우선 CCTV만들어본거예요. 엄청 귀차니즘이 심해서 그냥 x축으로 회전시킨 평면을 판으로씀 ㅋㅋㅋ,...(크흠..) 저거 중간에보면 cctv가 여러개의 씬으로 짤라져서 보이는데, 그거는 pass 늘리면 해결되는문제임니다. 이거 응용하면 드론구현하는것도 쌉가능 이거는 물리시뮬레이터예용. 그냥 기능은 공 부딫치면, 충돌처리하고, 반응만들기(무중력상태라고 가정) 여기에 중력이나 관성같은 저항, 힘들 추가하면 좀더 완성도있어보이겠죵..? 그리고 볼록거울 구현한 예제도 있는데, 지금 너무 졸려서 바이바이~ 끝 ! DirectX 12 개인공부 2022.05.19  0
[DirectX12] 동적입방체맵핑 마스터완료 동적 입방체맵핑 마스터 칸료....... 해골이 파란색구를 원운동하면서 실시간으로(동적으로) 파란구에 해골과 다른 오브젝트가 그려진다. 일단 이번 챕터는 버그가 너무 나서 포기할뻔했다.... 복잡하기도하고(그것도 매우 복잡)... 일단 rtv6개만들고 dsv하나더만들고 거기에 일반적인 환경맵도 그려야되서 srv 2개더만들고.... pass도 6개더만들고(환경맵6면 다그려야되서..) 하.......................... 진짜 이 챕터는 똥꼬쇼를 제일 많이한 ㅋㅋㅋㅋㅋ 챕터였다... 비용또한 엄청비싼비용을 가진 렌더링기술이였고,.... 해골이 동적으로 구에 비치는걸 표현하기위해 원운동을 인터넷에 참고하면서 구현했는데, 내가 구현한 원운동을 대략 이런식으로 파이썬에 그래프로 그려보았다. 파이썬 소.. DirectX 12 개인공부 2022.05.16  0
[ DirectX12 지형엔진 ] 일단 기본 프레임워크 제작끝.... 후.... 일단 기본적으로 dx11기반으로 진행하는 rastertek강의를 위한 dx12프레임워크 제작끝... 저가 대충 rastertek 지형엔진 강의 둘러봤는데, dx12로해도 상관없을것같음. 이번에 만든엔진은 책이나 인터넷안보고 아예 1부터 100까지 저의 머릿속내용으로만 코딩했어용. 실력좀 늘리려고 책이나 인터넷안보고 머릿속으로만 코딩해서 잘되가고 있는지는 모르겠네용... 그래도 아직까지는 오류없이 잘 동작하니까 굿..! 오늘한거 깃허브에 커밋하고 저는 잡니다.... 쓰으읍..하.... 다음은 그리드랑 카메라이동이네요... 카메라이동기법은 이미 알고있지만, rastertek강좌에서는 어떻게 구현하는지도 배울겸, 이부분은 그대로 rastetek강좌보면서하고, 그리드(Grid) DirectX 12 개인공부 2022.05.04  0
[Unity3D] 닷지 게임프로젝트 완성 참고한 책 이번에 완성한 유니티 프로젝트는 닷지(Dodge) 게임입니다. 닷지(Dodge)는 총알피하기게임의 제목으로, 사방에서 날라오는 여러개의 총알을 피하는 게임입니다. 해당 프로젝트는 포트폴리오가 아닌 개인연습용 프로젝트입니다. (애초에 포트폴리오는 여기다가 안올리고, Github블로그에다가 따로 포트폴리오페이지 만들예정!) 유니티는 시작한지 며칠안됬기때문에, 실력이 허접한점은 너그럽게 봐주십숑.. 게임실력도 허접한거 ㅈㅅ합니다.. 크흠..ㅋㅋㅋ....(최고기록이 12초임 ㅋㅋㅋ 프로젝트 완성&실습 2022.04.30  0
[DX12] 물리시뮬레이터 만들어봤습니다 !! 저가 몇달전부터 그래픽스를 공부해오며, 물리엔진에 관하여 관심이 쭈우욱 생겼습니다. 그래서 최근에 온라인서점으로 동역학책을 하나 주문해서 공부중이랍뉘다!! 동역학책에 있던 연습문제를 풀다가, 문뜩.. "이걸 내가 만든 렌더링엔진에다가 구현해보자!!!" 라는 생각이 들어서 바로 시도!! 결과는 매우 만족스럽네요 ㅋㅋ 기반은 DirectX12기반입뉘다. 사실 옆에 벽도설치하고, 바닥도설치하고 거기에 텍스쳐까지입혀서 실제감을 줄려고했는데, 귀차니즘이 또,,,ㅎㅎ,,,, 부정적분을 이용한 실시간 중력 수직낙하 시뮬레이터 우선 2가지 기능을 넣었어요. 1. 위치초기화: 해골의 위치와 중력가속도, 모든 알짜힘이 초기화된다. 2. 위로 던지는 힘 더하기: 위로 해골을 던지는 힘을 더한다. DirectX 12 개인공부 2022.04.23  0