2025/04 6

[기초수학] 선형성(Linearity)

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 선형성은 행렬을 배우기 전에 알아두어야할 기초 원리이므로, 이 다음에 공부할 행렬-역행렬 파트와 함께 보는 것이 좋다. 1. 선형성 (Linearity)1-1 선형성의 개념 선형성이란 어떤 함수나 연산이 선형적인 특성을 보이는 것을 의미한다. 따라서 그래프상에서 선형성은 항상 직선의 형태를 띄고 있다. 수학에서는 선형성을 만족하기 위해서 가산성(가법성)과 1차 동차성을 만족해야한다. 가산성 : f( x + y ) = f(x) + f(y) 1차 동차성 : f(k * x ) = k * f(x) (여기서 K란 스칼라 값을 의미함) 선형성을 만족하는 함수를 찾기 위해서는 위의 두 식을 대변해봐야한다. ex) ..

Math 2025.04.25

[Shader] OPaque Error with Unlit Shader (불투명 쉐이더 문제)

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 스터디 피드백을 해주던 도중 생긴 문제를 해결했던 것을 기록한다. 결론부터 말하자면 '오브젝트를 페이드 아웃 시키는 fade-out shader, 즉 Transparent가 Unlit Shader에서 적용되지 않는 문제가 발생했었고 이를 해결했었다. 이 이야기를 하면서 ZBuffer 및 알파 블렌드(Alpha Blend)에 대해서도 같이 작성하며 알파를 다루기 전 알아야할 이론을 공부했다. 교재나 웹사이트를 참고하며 정리한거기에 다소 난잡할것이다. Z Buffer?Z Buffer는 깊이 Buffer라고도 부르며, 이름 그대로 화면 기준에서 '깊이값'이 얼마인지 저장하고 있는 Buffer이다.X축과 Y축만이 ..

Shader 2025.04.25

[Shader] HLSL 작성 숙달을 위한 구조 파악 with Reflection Example

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 최근 공부를 위해 참고하고 있는 교재는 Surface Shader 중점적으로 다루고 있다. URP를 사용하기 위해서는 HLSL 기반으로 Shader를 작성할 필요가 있기 때문에 현재 공부는 교재 내용을 따라 학습 후 HLSL로 고치는 방식으로 진행하고 있다. HLSL의 구조 즉 Properties -> SubShader -> Pass -> struct Attributes, struct Varyinge -> Vertex Shader - > Fragment Shader 아래는 교재를 참고하면서 작성한 Cubemap 기반 Reflection 코드이다.위에서 언급했듯이 HLSL이 아닌 Surface Shader..

Shader 2025.04.24

[기초수학] 삼각함수 (Trigonometric function

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 1. 삼각함수 1-1 삼각함수의 개념 삼각함수라 한 각이 직각인 직각삼각형에서 출발한다. 한 각이 직각이므로 나머지 두 각의 합이 90도가 되며각 위치에 따라 빗변(직각의 대변), 밑변, 높이라고 부른다. 이러한 직각삼각형을 구성하는 세 변에서 두 변을 뽑아 각각의 비례관계로 나타낸 것을 삼각비 라고 한다.삼각비에는 대표적으로 사인, 코사인, 탄젠트 세 가지가 있다. 높이를 a, 밑변을 b,빗변을 h라고 했을 때 세 가지 삼각비(A)는 아래와 같이 구할 수 있다. 여기서 말하는 삼각비란 빗변-밑변의 사이값(A)이다. 즉 sin A은 높이/ 빗변(a/h) cos A은 밑변/빗변(b/h) tan A은 높이/밑..

Math 2025.04.21

[Unity] Object Pooling

Object Pooling이란?Object Pooling은 성능 최적화를 위해 자주 생성하고 파괴해야하는 오브젝트를 사전에 새성하고 재사용하는 방법이다.나의 경우에는 프로젝트에서 주기적으로 ball을 발사하는 canon때문에 사용하게 되었다.  처음에 작성했던 스크립트는 Instanctiate를 한 다음, 특정 Y축에 도달하면 Destory되도록 만들어 놓았다.여기서 문제가 발생한다.  Instantiate는 새로운 메모리를 할당하고 초기화(= 용량 낭비 발생 가능성 증가)Destroy는 오브젝트를 메모리에서 제거하고 Garbage Collection을 통해 메모리 정리 (= 시점 예측 불가 및 프레임 드랍 발생 가능성)  Object Pooling은 자주 사용될 오브젝트를 생성해둔다음, 사용하지 않는 ..

Unity/자료 2025.04.09