목차 1. 불투명과 반투명 2. 알파 블렌딩, 알파 소팅 3. 알파 테스트 4. 커스텀 알파 블렌딩 5. 파티클 쉐이더 만들어보기 6. 깨끗한 알파 블렌딩 쉐이더 만들기 7. ZTest와 ZWrite 8. 알파 블렌딩 쉐이더에서 발생하는 문제점들 9. 스텐실 10. References 불투명과 반투명 ...
유니티 쉐이더 & 함수 모음
Functions 트랜스폼에서 회전 행렬만 추출하기 // 트랜스폼의 회전 행렬 추출 float4x4 GetModelRotationMatrix() { float4x4 rotationMatrix; vector sx = vector(unity_ObjectToWorld._m00, unity_ObjectToWorld._m10...
OpenGL 공부 - 09 - uniform, VAO
목표 uniform 변수, VAO에 대한 이해 및 사용 1. uniform uniform이란? OpenGL에서 쉐이더로 전달하는 글로벌 변수 쉐이더에서 uniform 변수 선언 및 사용 #shader fragment #version 330 core layout(location = 0) out vec4 ...
유니티 - 스크립트 최적화
목차 1. GetComponent(), Find() 메소드 사용 줄이기 2. GetComponent() 대신 TryGetComponent() 사용하기 3. Object.name, GameObject.tag 사용하지 않기 4. 비어있는 유니티 이벤트 메소드 방치하지 않기 5. StartCoroutine() 자주 호출하지 ...
유니티 - 프로파일링을 통한 최적화
목차 1. Note 2. Tools 3. Unity Profiler Custom Profiler Tags CPU & GPU Boundary CPU Boundary GPU Boundary 4. Memory Profiler 5. References No...
유니티 - 에디터 프로파일러
목차 1. Unity Profiler 2. CPU Usage Timeline View Hierarchy View Show Related Objects Call Stack Show Calls Deep Profile 3. GPU Usage 4. Re...
C++ Smart Debugging
Note C++에는 미리 정의된 동적 매크로가 있다. __FILE__ 해당 위치의 소스파일 경로를 문자열로 가져온다. __LINE__ 해당 위치의 줄 번호를 정수로 가져온다. 그리고 매크로의 매개변수를 무조건 스트링으로 변환하여 가져올 수 있는 방법이 존재한다. #define MACRO(x) #x x에 위치한 코드를 문...
OpenGL 공부 - 08 - Debugging
목표 OpenGL 내에서 디버깅하기 공부 내용 OpenGL 내에서 에러가 발생하거나 코드를 잘못 작성한 경우, 친절한 에러 메시지보다는 그저 검은 화면을 볼 가능성이 높다. 그래서 디버깅을 하려면, OpenGL에서 제공하는 몇몇 메소드와 매크로를 활용해야 한다. glGetError ...
OpenGL 공부 - 07 - Index Buffer
목표 인덱스 버퍼의 사용과 이해 공부 내용 삼각형 그리기 삼각형을 하나 그리려면, 버텍스 3개가 필요하다. float positions[6] = { -0.5f, -0.5f, 0.0f, 0.5f, 0.5f, -0.5f, }; GPU는 전달받은 버텍스들을 순서대로 확인하...
유니티 - 인스펙터에 프로퍼티 표시하기
Memo public GameObject Property1 => Field1; private GameObject Field1; 이렇게 다른 필드와 연결된 프로퍼티라면 public GameObject Property1 => field1; [SerializeField] private GameObje...