전체 글
-
[week11] ParticleUE5 2025. 5. 16. 17:57
Emitter**Emitter(이미터)**는 파티클 시스템(Particle System) 안에서 파티클의 생성·갱신·렌더링 흐름을 한 덩어리로 묶어주는 단위입니다. 한 파티클 시스템은 여러 개의 Emitter를 가질 수 있고, 각각의 Emitter는 자신만의 모듈 스택(Module Stack)을 통해 다음 과정을 정의합니다.Emitter는 다음과 같은 역할을 합니다.- 파티클 생성(Spawn)“언제 몇 개를 뿌릴지”를 담당하는 Spawn 모듈들이 이 Emitter 안에서 실행되어 파티클을 생성합니다.- 초기화(Initialization)생성된 파티클의 초기 속성(위치, 속도, 크기, 색상 등)을 Initial 모듈들이 설정합니다.- 업데이트(Update)매 프레임 Gravity, Velocity over..
-
[week8] DelegateUE5 2025. 4. 25. 15:29
Delegate는 '관심사 분리'를 도와주는 도구이다.발신자(Subject): "어떤 일이 일어났어!"라고 말만 함구독자(Observer): "그 일이 일어나면 내가 할 일을 정해둘게!"이때 델리게이트는 '함수 호출만' 하니까, 내부 구현은 전혀 몰라도 됨Delegate를 쓰지 않는다면, 직접 참조 방식을 쓰게 된다.class School{ Student* student;public: void SetStudent(Student* s) { student = s; } void ChangeAcademicInfo() { // 학사 정보 바뀜 // 그에 따라 학생의 내부 상태를 직접 바꿈 student->SetMood("슬픔"); studen..
-
[week6] LightUE5 2025. 4. 12. 00:44
Texutre Normal Map 기존의 normal mapping과정은 vertex의 normal값을 가져와서 pixel shader로 넘길 때,래스터라이제이션 과정에서 정점마다 넘긴 값을 기준으로 삼각형 내부의 픽셀마다 선형 보간(interpolation)을 자동으로 해줌 이 보간은 삼각형 단위로 이루어지기 때문에, 삼각형이 화면에 차지하는 비율이 늘어날 수록 보간이 거칠어져서 빛 표현이 부정확해진다. -> Per-Pixel Lighting이 필요한 이유! 저번 주차에서 lighting을 구현할 때, Deferred-shading + Per-pixel Lighting으로 조명을 구현하긴 했다.그런데 normal은 vertex에만 존재하고, 이를 pixel 각각에 적용하기 위해서 GPU에서 자동으로 픽..
-
[week5] PixelShader - FogUE5 2025. 4. 4. 22:18
학습 목표Pixel Shader의 동작을 이해한다.후처리 (Post Process) Pass 구현을 통해 Multi-Pass Rendering에 대해 이해한다. FogFog는 Post Process에서 구현할 수 있지만, 제대로 하려면 Main-pass에서 처리하는 게 맞다. 왜 메인 패스에서 Fog를 처리하는가?1. 픽셀이 “생성될 때” 안개를 적용해야, 물리적으로 맞는 색이 나온다픽셀이 생길 때는:조명 계산머티리얼 색상그림자 여부이때 안개가 존재하면, → 빛의 감쇠, 색 번짐, 환경 색과의 혼합 같은 걸 고려해서 최종 색상을 결정함.👉 즉, Fog는 그냥 “화면 위에 덮는 투명 레이어”가 아니야.빛이 대기 속을 통과하면서 감쇠되는 걸 모델링하는 과정이야.2. 깊이별/고도별 안개량이 오브젝트별로 다르..
-
[week2] Texture RenderingUE5 2025. 3. 20. 23:31
# DirectX 11 렌더링 파이프라인 (함수 호출 기반 정리)## CPU 준비 단계 (함수 단위)1. **디바이스 및 스왑 체인 생성** - `D3D11CreateDeviceAndSwapChain()`2. **렌더 타겟 및 뎁스 스텐실 준비** - `SwapChain->GetBuffer()` - `Device->CreateRenderTargetView()` - `Device->CreateDepthStencilView()`3. **자원(Resource) 준비** - 정점 버퍼: `Device->CreateBuffer()` - 인덱스 버퍼: `Device->CreateBuffer()` - 셰이더 컴파일: `D3DCompileFromFile()` - 셰이더 생성: `Device..
-
[UE5] GameFeatureUE5/Lyra Clone Coding 2025. 2. 7. 01:03
GameFeature GameFeature 시스템은 Unreal Engine의 Modular Gameplay 시스템에서 제공하는 기능 중 하나로, 게임의 특정 기능이나 콘텐츠를 동적으로 로드하고 관리할 수 있도록 도와주는 시스템이야. 이를 활용하면 게임의 핵심 로직을 독립적인 모듈로 구성하고, 필요할 때 활성화하거나 비활성화할 수 있다. GameFeature는 언리얼에서 추구하는 모듈화의 끝판왕이라고 볼 수 있다. 핵심 개념 독립적인 기능 모듈특정 게임 기능(예: 새로운 무기 시스템, UI 확장, 캐릭터 능력 추가 등)을 별도의 모듈로 제작 가능.기능을 독립적으로 개발하고 관리할 수 있음.동적 로드 가능특정 상황에서만 로드하거나, DLC처럼 선택적으로 활성화 가능.예를 들어, PvP 모드는 멀티플레이어 ..
-
[UE5] CommonUserUE5/Lyra Clone Coding 2025. 2. 6. 20:37
Portal을 통과할 때 맵을 이동할 수 있도록, 즉 Experince를 변경할 수 있도록 설정해보자. Lyra에서는 이를 CommonUser라는 플러그인을 만들어서 진행하고 있다. CommonUser 플러그인은 Lyra에서 사용자 계정과 설정 관리를 담당하는 핵심적인 플러그인인데, 멀티 환경을 감안하여 플러그인으로 설정되어 있다. 우리는 이중에서 싱글플레이에서 사용하는 부분만 들고와서 사용할 것이다. SubSystem CommonSessionSubsystem은 GameInstanceSubsystem을 상속받아서 만드는데, 일단 이 SubSystem이란 무엇일까? 게임의 전역적인 기능이나 서비스 로직을 관리하기 위해 설계된 모듈화된 시스템인데, 게임의 어디서나 쉽게 접근할 수 있는 매니저 역할을 한다...
-
[UE5] CameraUE5/Lyra Clone Coding 2025. 2. 5. 18:04
Lyra의 Camera의 궁극적인 목표는 결국 Camera Component의 모듈화이다.CameraManager(CameraManager 상속), CameraComponent(CameraComponent 상속), CameraMode(UObject 상속)를 생성하는 것으로 시작한다. CameraManager CameraManager에서는 FOV(시야각), PITCH_MAX, PITCH_MIN(상하로 회전하는 각도)의 기본값을 설정해준다.AZSPlayerCameraManager::AZSPlayerCameraManager(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer){ DefaultFOV = ZS_CAMERA_DEFAULT_..