본문 바로가기

개발

C++ this C++에서 멤버 함수 안에서 자기 자신의 멤버를 this를 이용해 접근할 수 있음 구조가 어떻게 돼있냐하면.. class Foo { private: int x = 0, y = 0; public: void set(int a, int b) // void set(Foo* const this, int a, int b) { x = a;// this->x = a; y = b;// this->y = b; } static void foo(int a) // void foo(int a) { x = a;// error } }; 멤버 함수 인자에 보이지는 않지만 자기 자신을 가리키는 놈이 있음 static 함수에는 없음 그래서 일부 라이브러리를 사용하다 보면 문제가 있는데 사용자 클래스에서 스레드를 만들어 멤버 함수를 호출하..
초간단 흑백쉐이더 (GrayScale) 초간단하게 해서 그냥 메인 텍스쳐와 GrayScale용 값을 내적을 이용해 구했는데 응용하기는 쉬워서 내적하는 부분만 잘 알아두면 될듯함 결과 참고 https://en.wikipedia.org/wiki/Grayscale
Unity 하드웨어 스펙으로 자동 옵션 세팅하기 낮은 스펙의 디바이스로 게임을 하다 보면 게임 최초 시작의 옵션이 높아서 처음에 렉이 걸리는 경우가 있음 그런 경우를 대비해 앱 최초 실행 시 하드웨어 스펙을 체크해 자동으로 옵션을 세팅하는 기능이 필요 하드웨어 주요 스펙으로 CPU, GPU, RAM을 체크함 float cpuScore = 1.0f float gpuScore = 1.0f; float ramScore = 1.0f; cpuScore *= userHardwareSpec.processorFrequency / referenceSpec.processorFrequency; cpuScore *= userHardwareSpec.processorCount / referenceSpec.processorCount; gpuScore *= userHardware..
노말맵이 파란이유 노말맵을 보면 전체적으로 푸른빛임 노말맵은 픽셀 단위로 계산되는데 픽셀에 3차원 좌표(x, y, z)를 가지고 있음 RGB 각 값을 0~1로 표시하고 벡터에서 정규화된 0~1 값으로 사용됨 이중 z 축이 노말의 방향임 정규 벡터는 -1~1의 값으로 나오는데 0을 -1로 취급함 rgb : 0 0.5 1 xyz : -1 0 1 z 축은 역방향으로 나오지 않아 항상 0 이상 0의 rgb값은 0.5이고 항상 b값은 0.5 이상으로 나오므로 노말맵은 푸른색으로 나옴
난반사, 정반사, 주변광 (Diffuse, Specular, Ambient) 난반사 (Diffuse) LightVector = normalize(Light.Position - Object.Position) Diffuse = saturate(dot(LightVector, Normal) 정반사 (Specular) LightVector = normalize(Object.Position - Light.Position) Reflection = reflect(LightVector. Normal) CameraVector = normalize(Camera.Positon - Object.Position) Specular = pow(saturate(dot(Reflection, CameraVector)), SpecularPower); 주변광 (Ambient) Diffuse + Specular + A..
Python Selenium으로 웹 크롤링 웹 크롤링할 때 Requests를 사용해서 크롤링을 할 수 있음 하지만 Requests는 Html만 가져오고 자바스크립트 같은 걸 사용해 동적으로 보여주는 데이터는 처리를 못함 Selenium은 사람이 사용하는 웹브라우져를 이용함 Requests가 더 가벼움.. Selenium 설치 pip install selenium 사용할 브라우저별 드라이버 설치 Firefox : https://github.com/mozilla/geckodriver/releases Chrome : https://sites.google.com/a/chromium.org/chromedriver/downloads Edge : https://developer.microsoft.com/en-us/microsoft-edge/tools/webd..
공간 변환 Local Space(물체 공간) 각 3D 오브젝트가 가지는 자신만의 좌표계 World Space(월드 공간) 3D 오브젝트를 가상의 월드 공간 놓아 월드 공간의 원점에서 3D 오브젝트가 위치해 있는 좌표 View Space(뷰 공간) 카메라가 바라보는 공간의 원점에서 3D 오브젝트가 위치한 좌표 Projection Space(투영 공간) View Space를 2D 이미지 위에 투영. 투영공간에서 투시가 적용됨. 공간 변환 Local Matrix * World Matrix * View Matrix * Projection Matrix 로컬스페이스 -> 월드 스페이스 -> 뷰스페이스 -> 투영 -> 원근 분할
정점 셰이더(Vertex Shader), 래스터라이저(Rasterizer) , 픽셀 셰이더(Pixel Shader) 정점 셰이더 : 3D 모델의 정점의 위치를 화면상 좌표로 변환, 정점 수만큼 실행 래스터라이저 : 정점을 3개씩 찾아 삼각형 안에 픽셀을 찾음 픽셀 셰이더 : 래스터라이저가 찾은 픽셀의 최종 컬러를 계산, 래스터라이저가 찾은 픽셀 수만큼 실행