


namespace ConsoleApp3
{
// 람다식 , => , 익명함수 가독성 , 간결하게 하려고 , 인스턴스 함수
// (입력값) => {함수의 동작}
// => "이 매개변수 가지고 이런 동작을 하겠다" 는 의미
// {함수의 동작}: 실행할 코드
internal class Program
{
int GetNumber()
{
return 42;
}
// ()=>42
void PrintNum(int x)
{
Console.WriteLine(x);
}
// x => Console.WriteLine(x);
// 델리게이트 클로저 캡쳐
// "머리로는 알겠는데 제대로 이해한게 맞는지 모르겠다"
// 델리게이트 캡쳐
// 람다식이나 , 익명함수에서 외부 범위에서 선언된 변수(지역변수 , 필드)를 사용하는 것
// 외부에 있는 변수를 끌어다쓰면 중괄호가 끝나도 기억하고 있음
// 클로저
// 캡처된 변수와 해당 변수를 사용하는 함수를 묶어서 저장하는 방식
// 클로저 덕분에 , 함수가 외부 범위의 변수를
// "생명 주기와 관계 없이 계속 사용할 수 있게" 만든다
static void Main(string[] args)
{
int val = 42; // 그냥 함수 밖의 외부 변수 (지역 변수)
Func<int> getVal; // int를 반환하는 함수를 담을 수 있음
getVal = () => val; // 이 한줄에선 val이 정의되어 있지 않다
Console.WriteLine(getVal());
}
}
}
public class DelTest : MonoBehaviour
{
int counter;
int Increment()
{
return counter++;
}
Func<int> Closure()
{
int counter = 0;
return () => ++counter;
}
namespace DelegateExt
{
internal class Program
{
static void Main(string[] args)
{
List<Action> actions = new List<Action>();
for(int i = 0; i < 10; i++)
{
actions.Add(() => Console.WriteLine(i));
}
foreach (var action in actions)
{
action();
}
}
}
}
▼ 결과값

for(int i = 0; i < 10; i++)
{
actions.Add(() => Console.WriteLine(i));
// 얘는 지금 i에 들어있는 0을 기억하는 것이 아님
// 얘는 i 를 출력한다라는 개념을 통째로 기억한다
}
URP



- 입력조립 : Vertex 의 정보를 받아 좌표를 어떻게 그릴지 확인
- 정점셰이더 : 로컬 스페이스의 좌표를 공간 스페이스에 위치하도록 좌표계를 변환
- 레스터라이저 : 화면에 출력할 픽셀을 구성
- 픽셀셰이더 : 기본 도형의 픽셀에 조명 , 그림자 , 텍스쳐 등을 입히는 단계
- 출력 병합
클라이언트 프로그래머
그래픽 , 쉐이더 주로 다루는 사람 : 태크니컬 아티스트 TA
Vertex : 물체의 가장 기본이 되는 점 ( 좌표 x , y , z)
모든 3D 모델은 여러 버텍스로 이루어져 있다
폴리곤 : 물체를 이루는 최소 면 단위
가장 안정적이고 연산 단순화를 위해 삼각 혹은 사각 사용
메시 : 폴리곤 무리가 모여서 만들어지는 하나의 물체 덩어리
우리가 흔히 알고 있는 형태를 가진 오브젝트에 다 존재한다


텍스처 : 어떤 모델의 표면에 대한 이미지 정보
메터리얼 : 물체의 표면 정보를 종합적으로 가지는 속성
표면색상 , 질감 , 빛 반사율 , 투명도
쉐이더 : 컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 색정보를 지정해 주는 함수
컬링 : 보지이 않을 부분을 추려내기
3D 모델 → 메터리얼 → 쉐이더 → 랜더링
씬 뷰를 통해 구성한 모델링들을 2D 모니터로 옮긴다
이걸 랜더링 파이프라인이라고 한다

public class LayerCtrl : MonoBehaviour
{
Camera cam;
int layerMask;
void Start()
{
cam = Camera.main; // 메인카메라 가져와서 담는 법
layerMask = 7;
// 0000 0111
// 0000 0000
// 8756 4321
cam.cullingMask = layerMask;
}
}
비트연산을 사용하는 이유
여러 개를 활성화하기 위해서 비트 연산을 사용
헷갈리면 010101 을 숫자로 보지 말고
false true false true false true 로 된 배열이라고 보면 된다.
flag : 상태를 표시하거나 구분하기 위한 변수나 비트 값’**을 말한다.
주로 Boolean(참/거짓) 값으로 사용되지만, 비트 연산을 통해 여러 상태를 하나의 정수로 표현하기도 한다.

'📖TIL' 카테고리의 다른 글
| 251109 (0) | 2025.11.09 |
|---|---|
| 251105 (0) | 2025.11.05 |
| 어제 작성한 코드 역설계 및 풀이 (0) | 2025.10.30 |
| 251024 Revision (0) | 2025.10.24 |
| 251023-2 (0) | 2025.10.23 |