분류 전체보기
-
Part 1. 자료구조자료구조는 기본이죠 2019. 2. 8. 01:27
Part 1. 자료구조 - 배열 (Array) 하나의 변수에 여러 데이터를 담는 자료구조일직성 상에 빈틈없이 데이터를 나열한 1차원 배열. 배열의 첫번째 요소 번호는 0에서부터 시작한다.(Pascal, Basic 등(초창기 언어)은 1에서부터 시작.) 빈틈없이 데이터를 나열한다는 뜻은시작된 기억장소 주소로부터 연속된 위치를 차지한다. // array[0] | α// array[1] | α + sizeof(int)// array[2] | α + 2 * sizeof(int)// array[3] | α + 3 * sizeof(int) - 리스트 (List) 데이터를 순서대로 나열한 자료구조배열과 같이 차례대로 나열하여 관리하나, 데이터들이 서로 연결되어 있어떨어진 장소에 위치해도 된다. // typedef s..
-
Part 2. 이름에코딩을 더 깔끔하게 2019. 2. 7. 21:42
Part 2이름에 정보 담기 함수명, 변수명을 짓는 것은 프로그래머가 가장 어려워하는 것.예전에 나는 이것이 농담이야, 장난처럼 던지는 말이지 !라고 말을 했었으나 이 글을 읽는 사람들이라면 다들 '요놈 짜식보게' 라고 말을 할지도 모른다. 이름에 정보를 담아내라.특정한 단어 고르기.보편적인 이름 피하기.추상적인 이름 대신 구체적인 이름 사용하기.접두사 혹은 접미사로 이름에 추가적인 정보 덧붙이기.추가적인 정보를 담을 수 있게 이름 구성하기. 차근차근 위의 문장들을 읽어보아야한다.가장 흔히 하는 나의 문제는 어느 한 단어에 꽂힌다는 것이다. 다른 사람의 코드를 보고나면 좋은 점을 배우고 돌아오는데항상 여기에서 꽂힌 단어는 계속 내 코드에 등장하기 마련이다. 한참 initialize 라는 단어에 빠져있을 ..
-
Part 1. 코드는코딩을 더 깔끔하게 2019. 2. 7. 20:46
Part 1코드는 이해하기 쉬워야한다. 첫번째 파트를 읽는 순간 가장 먼저 떠오르는 두 가지가 있었다. 회사에서 가장 처음으로 차장님께 코딩을 배울 때는 전혀 부끄러운 점이 없었다.아는 것이 전혀 없어서였다고 하는게 정답일 것이다. 그렇게 배우기를 1년 하고도 반년이 지났을 무렵 스스로에게 처음으로 질문을 던졌었다.과연 이렇게 코딩을 하면 빠르게 실행이 될까 ?과연 다음 누군가에게 설명을 멋있게 할 수 있을까 ? 그에 대한 대답은 이미 정해져있었기에, 나는 가벼운 마음으로 자리에서 일어나 책가방을 짊어 메고 일어섰다. 코드는 이해하기 쉬워야한다.가독성의 기본정리.분량이 적으면 항상 더 좋은가 ?이해를 위한 시간은 다른 목표와 충돌하는가 ? 나는 이 질문에 예전 코드를 꺼내어 보려한다. 엄청 부끄럽다. 이..
-
Unity - VR 개요 (지원 기기)Unity - VR 2018. 6. 23. 19:34
Version : 2018.2b유니티 VR 컨텐츠 제작을 위해 쓰인 공부 자료입니다. Unity VR - 개요 (지원기기) - Stereo (Stereoscopic) (Stereo 3D via D3D11 or OpenGL) 스테레오 스코픽: stereoscopic는 '두 개의' 라는 접두사 그리스어στερεός (stereos) 에서 유래되었으며, scopic는 '보고'라는 의미이다.두 눈을 이용하여 물체를 인식하는 것을 모방하여, 뷰어의 왼쪽 및 오른쪽 눈에 별도로 두개의 이미지를 제공한다. 특수한 장치를 통하여보여줌으로써 그것을 보는 사람으로 하여금 입체감을 느낄 수 있게 하는 것이다. - 'Mono' vs 'Stereo'스테레오는 위에서 설명했듯이, 각 눈에 다른 이미지를 제공하는 반면, 모노는 양..
-
Chapter 9.6 Displacement mapping3차원 그래픽스/Mapping 2018. 6. 11. 16:35
이 문서는 개인 공부용으로 쓰였습니다.- 게임 프로그래밍을 위한 3차원 그래픽스 (한정현) Chapter 9.6 Displacement mapping 0. 정의 - 변위 매핑은 런타임에 매크로구조를 테쎌레이션하고 그 결과 얻어진 정점의 위치를 하이트맵을 사용해 실제로 옮긴다.- 쉐이더 모델 5에서 테쎌레이션을 하드웨어로 지원함에 따라 변위 매핑은 실시간에 구현 가능한 알고리즘이 되었다. 1. 문제점 - 적절한 테쎌레이션 인자를 결정하는 것- 과도한 테쎌레이션된 매크로구조가 화면에서 아주 작은 영역만 차지하는경우 - 비효율성 실제 화면에 차지할 영역을 고려하여 테쎌레이션 인자를 결정하여야 한다. 사전에 변위 매핑을 수행한 부분이 가시권 밖에 놓이지 안헤 가시성을 계산하는 것이 필요하다.
-
Chapter 9.5 Parallax mapping3차원 그래픽스/Mapping 2018. 6. 11. 15:56
이 문서는 개인 공부용으로 쓰였습니다.- 게임 프로그래밍을 위한 3차원 그래픽스 (한정현) Chapter 9.5 Parallax mapping 0. 정의 - 광선 추적법을 사용하여 시차 현상을 생성한다.- 다른 이름으로는 Virtual Displacement mapping이다. 1. 과정- 하이트 필드와 시선 벡터 V의 교차점을 이용하여, V의 역방향으로 광선을 발사하고 이를 추적한다. 광선이 일정한 간격으로 샘플링이 되면 각각의 점들을 방문하며, 그 점이 하이트 필드 위에 있는지 검사한다. 점이 발견되면, 그 전의 점 하이트 필드의 값과 현재 점의 하이트 필드의 값 차이를 구한다. 대개의 경우 일치하지 않기에 오차를 극복하기 위하여 새로운 점을 선택하여 다시 검사하게 된다. 2. 사용- 노멀 매핑과는 ..
-
Chapter 9.4 Object space Normal mapping3차원 그래픽스/Mapping 2018. 6. 9. 14:10
이 문서는 개인 공부용으로 쓰였습니다.- 게임 프로그래밍을 위한 3차원 그래픽스 (한정현) Chapter 9.4 Object space Normal mapping 0. 정의 - 오브젝트 좌표계 상에서의 노말을 저장함 1. 노멀맵 제작 - 저해상도 모델을 매크로구조로 이용하여, 파라미터화를 적용 시켜 모든 정점에 대해 정규화된 텍스처 좌표를 구한다. - 해상도에 맞는 노멀맵의 새 텍스처 좌표를 정의한다. - 매크로구조의 삼각형은 래스터화되어 다수의 텍셀을 포함하고, 각 정점에는 노멀 정보를 저장하고 있다. - 노멀을 저장한 텍스처 오브젝트 공간 노멀맵 2. 오브젝트 공간의 노멀 -> 탄젠트 공간으로 - 삼각형의 각 정점에 대해 탄젠트 공간의 기저 {T, B, N}을 계산 - 무게중심 좌표를 사용하여 정점별..
-
Chapter 9.3 Tangent space Normal mapping3차원 그래픽스/Mapping 2018. 6. 8. 21:13
이 문서는 개인 공부용으로 쓰였습니다.- 게임 프로그래밍을 위한 3차원 그래픽스 (한정현) Chapter 9.3 Tangent space Normal mapping 0. 정의 - 텍스처링은 텍스처를 물체의 표면에 펴 바르는 작업이므로 2차원 평면에서 탄젠트 공간의 정보를 갖는다는 의미를 갖고 있다. 즉, 노멀맵의 노멀 각각은 그 노멀이 적용될 표면 점의 탄젠트 공간에서 정의 된 것이다. 1. 탄젠트 공간 - 물체의 표면을 기준으로 법선 벡터 방향을 Z축으로 놓는 공간. * T : Tangent vector(접선 벡터) * B : Bitangent vector(종법선 벡터) * N : Normal vector(법선 벡터) 폴리곤 메쉬의 표면 노멀은 일반적으로 모델링 단게에서 정점별로 계산된다.탄젠트 공간 ..