분류 전체보기(107)
-
glm을 왼손 좌표계로 설정하기
assimp를 이용해 3D 모델을 읽어서 작업하던 중, 라이팅 작업에 들어가기에 앞서 카메라 컨트롤러를 만들고 있었습니다. 그런데 카메라 이동이 이상한겁니다. z축과 y축 움직임은 괜찮은데, x축 움직임이 반대로 되고 있었습니다. 그것도, 카메라의 position은 정상적으로 변하는데 보이는건 뭔가 반대로 보이고 있는 것 같았습니다. 처음에는 View Matrix를 의심했고, 그래서 뭘 잘못하고있나 확인해봤습니다. //... glm::vec3 right = glm::cross(m_Up, m_Front); if (Input::IsKeyPressed(RS_KEY_A)) m_Position -= right * speed * Time::GetDeltaTime(); if (Input::IsKeyPressed(RS..
2023.11.08 -
assimp를 premake로 빌드하기
3d 렌더러를 만들기위해 obj 파일을 읽을 수 있는 라이브러리가 필요했습니다. 여러개가 있었는데, 여러 포맷을 지원해주는 assimp를 이용하기로 했습니다. assimp: https://github.com/assimp/assimp GitHub - assimp/assimp: The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clea The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure. - GitHub - assimp..
2023.11.05 -
GPU를 위한 텍스쳐 압축 기법 (DXT, PVRTC, ETC, ASTC)
유튜브 Unity Korea 채널의 알쓸유잡 - 효율적인 텍스처 압축 이해하기 영상을 참고해 공부한 내용을 정리했습니다. 추가로 유니티의 ETC 관련 블로그 포스팅을 참고했습니다. 기본적으로 텍스쳐는 32bpp, half color 표현시 16bpp로 텍스쳐를 표현한다. 보통 익숙한 png나 jpg등의 가변비율 인코딩 방식은 디스크에 이미지를 저장할 때 사용하는 방식으로, GPU에서 텍스쳐를 사용할 때는 Sample 연산을 위해 다시 원본을 복원해 메모리에 올려야한다. GPU에선 interpolation 등의 이유로 Sample 연산을 무지 많이 해야하기 때문에, 실제 메모리에 올라가는 텍스쳐를 압축하려면 빠른 디코딩이 되어야 하고 Random Access가 되어야한다. 블럭기반 압축 앞으로 설명할 텍스..
2023.11.04 -
[Unity Shader] 간단한 Cloak 쉐이더
이 글은 유니티 코리아 유튜브 채널에 있는 유니티 셰이더그래프 튜토리얼 3 : 투명망토 효과(cloaking, stealth) 를 참고해 초보자가 학습한 내용입니다. 요약 위와 같은 투명인간 효과를 위한 쉐이더를 구현합니다. 쉐이더는 크게 아래의 과정으로 이루어집니다. 기본적인 씬이 렌더링 된 후에(Transparent 단계) 실행되어, 현재 픽셀 위치의 Screen Color를 불러와 표시한다. 현재 픽셀 위치에 vertex normal값을 더해줘 왜곡을 준다. Fresnel 효과로 외곽선 부분에 색을 넣는다. Cloak 쉐이더 Screen Color 구하기 우선 렌더링 파이프라인 애셋에 Screen Color를 버퍼에 담도록 설정해야한다. 여기서 Opaque Texture를 체크해주면 되고, Down..
2023.11.02 -
CS 공부 1 - 비트~숫자/텍스트/색 표현
비트 비트 : 0 or 1 을 표현 기본 boolean 연산 : AND, OR, NOT, XOR 드모르간의 법칙 : A and B = ~A or ~B 정수 정수는 2진수로 표현됨 LSB : Least Significant Bit MSB : Most Significant Bit 정수 표현 방법 냅다 2진수로 표현 : 음수 표현 불가능 맨 앞 비트를 부호로 사용 : 0표현이 2개(1000, 0000)이고, 더하기가 매끄럽지않음 음수는 1의 보수 (양수에서 모든 비트 반전) : 0표현이 2개, 순환 올림 발생(부호비트끼리 더한 뒤 carry를 맨 LSB에 더해줘야함) 따라서 : 2의 보수 (0과 더하면 -1이 되는 수를 -1로 정함) (모든비트 반전 후 +1) 실수 고정소수점 표현 : 비트 일부는 정수부, 일..
2023.10.25 -
Python 가상환경 venv 간단 활용법 (VSC 보안오류 해결)
venv는 Python에서의 가상환경으로, 굉장히 많은 라이브러리를 사용하는 Python 프로젝트를 활용할 때 정말 유용하다. 한 컴퓨터에 여러 프로젝트의 라이브러리들을 설치하다보면 버전이 서로 충돌되는 경우가 많은데, 이 때 활용할 수 있다. 대부분의 Python 오픈소스 프로젝트들은 requirements.txt를 제공하기 때문에, 아무것도 설치되지 않은 새로운 가상환경을 만들고, requirements.txt에 써있는 라이브러리들을 설치해 실행하면 된다. 1. 프로젝트 폴더로 가기 cd my_project 2. venv 생성하기 python3 -m venv [환경이름] 예) python3 -m venv env 3. 가상환경 활성화 Windows) [환경이름]\Scripts\activate 예) en..
2023.09.09