본문 바로가기

전체 글45

[Shader] Dithering Shader 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 원래 디더링이 어떤 역할을 하는지, 어떤 개념인지도 같이 작성했었는데 글이 한 번 날아갔다...개념까지 다시 정리할 힘이 없으므로 개념은 생략하고 코드 작업만 작성했다. (개념 자체는 참고자료에 잘 적혀있다)간단히 말하자면 알파 블렌딩을 쓰지 않는다는 뜻! 코드 원문(Git Hub)코드 원문은 참고자료에 GitHub주소를 달아두었다. PropertiesProperties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Main Texture", 2D) = "white" {} _DitherScale("Dither Scale", F.. 2025. 5. 9.
[자료구조] 시간복잡도와 Big-O 표기 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 좋은 알고리즘을 평가하는 척도 : 시간복잡도와 공간복잡도 기본적으로 시간복잡도, 즉 속도가 얼마나 빠르냐에 따라서 좋은 알고리즘을 평가하게 된다.그리고 시간복잡도를 측정하기 위해서 데이터에서 연산 횟수가 얼마나 되는지를 연산해야하는데이를 알아보는 지표 빅오, 빅오메가, 빅세타 표기법이라고 한다. 각자 최악-최선-평균을 구하는 표기법이다. 빅오(Big-O) 표기법시간복잡도를 통한 성능을 측정하기 위해서 보통 빅오(Big-O)를 지표로 삼게되는데,최악인 상황에서 잘 작동한다는건 결국 어떤 상황에서도 수행이 보장됨을 의미하기 때문이다. 빅 오 표기법은 ‘n이 커질 때 알고리즘의 단계가 얼마만큼 증가하는가’ 를 잘.. 2025. 5. 9.
[Shader] Fog with SkyBox f공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 해당 예제는 유니티의 Built-in 코드를 기반으로 작업하였다. 이것은 수정하기전의 모습이다. World 전체에 Fog Lighting이 적용되지 않는 것이 확인된다. 기존의 코드에서 수정한 부분들 위에서 언급한 Fog 관련 처리 및 include할 HLSL 파일들 수정이 주로 이루어졌다. 기존 코드는 CG기반이기에 HLSL로 수정 작성하면서 필요해진 작업이다. 즉, 본래 사용되었던 내장함수들을 사용할 수 없기 때문에 추가하거나 대체해줄 필요가 있었다. 1. Unity_PI PI는 우리가 알고있는 파이(x) 즉 3.14이다. URP에서 내장되어있지 않으므로 직접 추가해주었다. 2. UnityObj.. 2025. 5. 8.
[기초수학] 선형성(Linearity) 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 선형성은 행렬을 배우기 전에 알아두어야할 기초 원리이므로, 이 다음에 공부할 행렬-역행렬 파트와 함께 보는 것이 좋다. 1. 선형성 (Linearity)1-1 선형성의 개념 선형성이란 어떤 함수나 연산이 선형적인 특성을 보이는 것을 의미한다. 따라서 그래프상에서 선형성은 항상 직선의 형태를 띄고 있다. 수학에서는 선형성을 만족하기 위해서 가산성(가법성)과 1차 동차성을 만족해야한다. 가산성 : f( x + y ) = f(x) + f(y) 1차 동차성 : f(k * x ) = k * f(x) (여기서 K란 스칼라 값을 의미함) 선형성을 만족하는 함수를 찾기 위해서는 위의 두 식을 대변해봐야한다. ex) .. 2025. 4. 25.
[Shader] OPaque Error with Unlit Shader (불투명 쉐이더 문제) 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 스터디 피드백을 해주던 도중 생긴 문제를 해결했던 것을 기록한다. 결론부터 말하자면 '오브젝트를 페이드 아웃 시키는 fade-out shader, 즉 Transparent가 Unlit Shader에서 적용되지 않는 문제가 발생했었고 이를 해결했었다. 이 이야기를 하면서 ZBuffer 및 알파 블렌드(Alpha Blend)에 대해서도 같이 작성하며 알파를 다루기 전 알아야할 이론을 공부했다. 교재나 웹사이트를 참고하며 정리한거기에 다소 난잡할것이다. Z Buffer?Z Buffer는 깊이 Buffer라고도 부르며, 이름 그대로 화면 기준에서 '깊이값'이 얼마인지 저장하고 있는 Buffer이다.X축과 Y축만이 .. 2025. 4. 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.. 2025. 4. 24.
[기초수학] 삼각함수 (Trigonometric function 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 1. 삼각함수 1-1 삼각함수의 개념 삼각함수라 한 각이 직각인 직각삼각형에서 출발한다. 한 각이 직각이므로 나머지 두 각의 합이 90도가 되며각 위치에 따라 빗변(직각의 대변), 밑변, 높이라고 부른다. 이러한 직각삼각형을 구성하는 세 변에서 두 변을 뽑아 각각의 비례관계로 나타낸 것을 삼각비 라고 한다.삼각비에는 대표적으로 사인, 코사인, 탄젠트 세 가지가 있다. 높이를 a, 밑변을 b,빗변을 h라고 했을 때 세 가지 삼각비(A)는 아래와 같이 구할 수 있다. 여기서 말하는 삼각비란 빗변-밑변의 사이값(A)이다. 즉 sin A은 높이/ 빗변(a/h) cos A은 밑변/빗변(b/h) tan A은 높이/밑.. 2025. 4. 21.
[Shader] Hologram shader 제작 연습 with HLSL Rim Light 기반으로 색상과 Hologram정도를 조절할 수 있는 HLSL 쉐이더 코드를 작성하였다.사실 말이 Hologram이지 사실상 Transparent-Opacity 조절이지만... 확실히 쉐이더 그래프보다 어렵다 2025. 4. 9.
[Unity] Object Pooling Object Pooling이란?Object Pooling은 성능 최적화를 위해 자주 생성하고 파괴해야하는 오브젝트를 사전에 새성하고 재사용하는 방법이다.나의 경우에는 프로젝트에서 주기적으로 ball을 발사하는 canon때문에 사용하게 되었다.  처음에 작성했던 스크립트는 Instanctiate를 한 다음, 특정 Y축에 도달하면 Destory되도록 만들어 놓았다.여기서 문제가 발생한다.  Instantiate는 새로운 메모리를 할당하고 초기화(= 용량 낭비 발생 가능성 증가)Destroy는 오브젝트를 메모리에서 제거하고 Garbage Collection을 통해 메모리 정리 (= 시점 예측 불가 및 프레임 드랍 발생 가능성)  Object Pooling은 자주 사용될 오브젝트를 생성해둔다음, 사용하지 않는 .. 2025. 4. 9.
[기초수학] 선형독립 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 벡터의 생성(span) 시스템 1-1 선형 결합 (Linear Combination)  앞서 벡터 챕터에서 살펴본 벡터 공간의 벡터 합과 스칼라 곱셉 연산은 선형성을 지니고 있어 선형 연산이라고도 부른다. 이런 선형 연산을 이용해 새로운 벡터를 생성하는 수식을 선형 결합이라고 한다 #선현 결합의 수식 v'=a_1 v_1+a_2 v_2+a_3 v_3+⋯+a_n v_n  1-2 선형의존과 선형독립 선형의존이란 스칼라의 값이 모두 0이 아닌데도 영벡터를 만들 수 있을 때,벡터는 서로 선형 종속 관계를 가지는 선형 의존 상태라고 한다.  한 벡터가 다른 벡터의 배수일 경우 에도 선형의존이다.  반면 선형독립이란 수식의 결과.. 2025. 3. 28.
[기초수학] 벡터 공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 1. Vector의 개념1-1 수 직선의 한계수를 점으로 표현한다면 1차원 도형 수직선 위에 있는 것들만 표현이 가능하다.평면에서 시각적으로 의미 있는 물체를 생성하기 위해서 평면을 구성하는 원소를 정의해야하는데이를 Vector라고 한다.   1-2 데카르트 좌표계직선의 수 집합을 수직으로 배치해 평면을 표기하는 방식을 말한다. 데카르트 좌표계는 직교(90도)하고 있으며, 이는 가로축의 실수집합과 세로축의 실수집합이 연관이 없다는 것을 의미한다. 데카르트 좌표계의 한 원소는 곱집합과 동일하게 순서쌍으로 표현하며, 이를 좌표라고 부른다.곱집합의 원어가 데카르트 곱임을 생각해본다면 동일한 개념임을 알 수 있다. (x, .. 2025. 3. 27.
[Unity] Android 무선으로 빌드하기 USB port를 매번 사용하는게 번거로워서 무선 빌드를 활용하기로 했다.내가 사용하는 os가 Android 이므로 Android만 다룬다  0. 무선 디버깅 설정[개발자 옵션] -> [무선 디버깅] 으로 이동한다.(현재는 이미 커넥트 된 상태라서 아래에 페어링 기기가 뜬다.)  페어링 코드 기기 페어링을 선택 후 해당하는 페어링 코드와 IP주소를 추후 사용하면 된다. 1. ADB(Android Debug Bridge) 확인[Unity] -> [Edit] -> [Preferences] -> [External Tools]에서 Andriod SDK Tools의 경로를 복사한다.해당 경로로 이동한 뒤 CMD를 열어준다.  2.  CMD 아래의 순서대로 진행한다. 1. dir 입력 : 해당 주소에 있는 디렉토리.. 2025. 3. 21.