전체 글 22

[자료구조] 선형 자료구조 : List, Stack, Queue, DeQue

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 선형구조 : List1. 선형 리스트(Linear List)연속되는 기억장치에 저장되느 자료구조로, 대표적으로 배열(array)이 있다. 원하는 정보가 있으면 해당하는 Index에 바로 찾아가면 되므로 접근속도가 빠르다는게 특징이다.단, 데이터 삽입-삭제시 데이터를 이동해주어야하므로 번거롭다. 2. 연결 리스트(Linked List)자료를 임의의 공간에 기억시키고, 순서에 따라 포인터로 연결시킨 자료구조이다.기억공간이 연속적이지 않고, 포인터를 통해 사슬처럼 앞뒤가 연결되어있는 것이 특징이다. 따라서 배열과 같은 선형 리스트와 비교했을 때 데이터(원소)의 삽입과 제거가 용이하지만 접근 속도가 느리다는 단점도 존..

Data structure 2025.05.09

[Shader] Dithering Shader

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 원래 디더링이 어떤 역할을 하는지, 어떤 개념인지도 같이 작성했었는데 글이 한 번 날아갔다...개념까지 다시 정리할 힘이 없으므로 개념은 생략하고 코드 작업만 작성했다. (개념 자체는 참고자료에 잘 적혀있다)간단히 말하자면 알파 블렌딩을 쓰지 않는다는 뜻! 코드 원문(Git Hub)코드 원문은 참고자료에 GitHub주소를 달아두었다. PropertiesProperties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Main Texture", 2D) = "white" {} _DitherScale("Dither Scale", F..

Shader 2025.05.09

[자료구조] 시간복잡도와 Big-O 표기

공부용으로 작성되는 페이지입니다. 틀린 부분이나 환경에 따라 오류가 발생할 수 있습니다. 좋은 알고리즘을 평가하는 척도 : 시간복잡도와 공간복잡도 기본적으로 시간복잡도, 즉 속도가 얼마나 빠르냐에 따라서 좋은 알고리즘을 평가하게 된다.그리고 시간복잡도를 측정하기 위해서 데이터에서 연산 횟수가 얼마나 되는지를 연산해야하는데이를 알아보는 지표 빅오, 빅오메가, 빅세타 표기법이라고 한다. 각자 최악-최선-평균을 구하는 표기법이다. 빅오(Big-O) 표기법시간복잡도를 통한 성능을 측정하기 위해서 보통 빅오(Big-O)를 지표로 삼게되는데,최악인 상황에서 잘 작동한다는건 결국 어떤 상황에서도 수행이 보장됨을 의미하기 때문이다. 빅 오 표기법은 ‘n이 커질 때 알고리즘의 단계가 얼마만큼 증가하는가’ 를 잘..

Data structure 2025.05.09

[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..

Shader 2025.05.08

[기초수학] 선형성(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