전체 글 121

[UE] Use Controller Rotation, Use Controller Desired Rotation

유저에서 이동과 관련된 코드를 다 때려박지 말고, Charactor Movement Component에 이동과 관련된 부분은 다 맡기고, 나는 그 의도만 전달하는식으로 코드를 분리하는게 좋음(실제 이동하는 코드까지 유저에서 하지 말라는 이야기) 마찬가지로 유저와 컨트롤러 코드도 분리 Use Controller Rotation를 키면 컨트롤러의 회전이 곧 유저 회전이 되도록 세팅Use Controller Desired Rotation은 컨트롤러의 회전이 유저의 회전이 되긴 하는데 속도를 조절해서 컨트롤러의 회전을 유저가 '천천히' 따라가도록 조절 가능

공부/UE 2025.03.23

EC2 인스턴스를 활용한 서버 구축 및 외부 접속 작업

AWS에서 EC2 인스턴스 머신을 임대하고, 도메인을 구매해서 외부 접속이 가능한 간단한 채팅 서버를 구현해보았다 EC2 서버머신  Client1 Client2    UI 작업을 아예 안해서 솔직히 채팅 프로그램이라고 하기는 좀 그렇지만 어쨌든 AWS EC2 를 활용하면서 도메인을 통한 퍼블릭 IP를 뽑아내서 외부 접속을 가능하게 한 데에 의미가 있는 것 같다

공부/그 외 2024.07.14

Picking을 위한 Screen 공간 -> 뷰 공간으로 역변환

Reference https://mycom333.blogspot.com/2013/07/picking.html?m=0 Picking 마우스 혹은 기타 입력 장치로 모니터 화면의 좌표를 지정하면 3D 세계에 있는 오브젝트를 선택할때 사용된다. 화면의 좌표는 2D, 세계는 3D인 경우 오브젝트의 선택 방법을 만들어야 한다. 먼저 mycom333.blogspot.com 6.6 Picking - Essential Mathematics for Games & Interactive Applications Second Edition https://www.slideshare.net/QooJuice/picking-129456487 Picking Picking 쿠재아이 김재경 www.slideshare.net https://..

포워드 렌더링(Forward Rendering) vs 디퍼드 렌더링(Deferred Rendering)

포워드 렌더링 물체를 그리고 그 물체에 대한 라이팅을 적용하는 순서로 렌더링. N개의 광원과 M개의 물체가 있는 씬에서 NxM번의 드로우 콜이 필요하다. 그래서 물체가 많을 때에는 성능 저하가 심하다 디퍼드 렌더링 포워드 렌더링을 사용함으로써 생기는 성능 저하를 방지하게 위해 멀티 렌더 타겟(MRT)를 지원하는 경우 사용할 수 있다. N개의 광원과 M개의 물체가 있는 씬에서 N+M번의 드로우 콜이 필요 과정 1. 모든 물체에 대해 화면 해상도 크기의 렌더 타겟에 물체 고유의 색상(라이트를 적용하기 전 색상을 의미. Material 자체의 Diffuse, Emmisivem, Ambient, Specular 색상), 깊이 값, 노말 벡터 등을 저장 2. 똑같은 크기의 다른 렌더 타겟에 Light를 누적시킨 ..

remove와 remove_if

template ForwardIterator remove(ForwardIterator first, ForwardIterator last, const T& val); template ForwardIt remove_if( ForwardIt first, ForwardIt last, UnaryPredicate p ); 제목에서부터 알 수 있듯이 소개할 remove와 remove_if 함수는 특정 원소를 지워주는게 아니라, 3번째 인자 뒤에 존재하는 3번째 인자에 해당하지 않는 값으로 덮어써서 3번째 인자를 뒤로 몰아줄 뿐이다. 따라서 찾은 값을 지우고 싶다면 반드시 erase함수를 한번 더 호출해줘야 한다. 찾은 값을 뒤의 값으로 덮어 써..

공부/C || C++ 2022.09.30

계산 셰이더(Compute Shader)

계산 셰이더(Compute Shader) DirectX가 제공하는 프로그램 가능 셰이더 중 하나 렌더링 파이프 라인 외부에 따로 존재한다 => 그럼에도 화면에 렌더링하지 않고도 GPU 자원에 읽고(Read) 쓰는게(Write) 가능하다 병렬적 알고리즘 구현에 용이하다 => GPGPU 프로그래밍에 유용하다 계산 셰이더의 출력 결과를 렌더링 파이프라인에 다시 바인딩 할 수 있다 GPGPU(General Purpose GPU) 프로그래밍 GPU를 비그래픽 분야에 응용하는 것. 장점 : 많은 양의 데이터를 병렬적으로 처리할 수 있다 ex) 파티클 시스템 단점 : 그래픽 연산과 달리 GPU의 연산 결과를 다시 CPU로 보내야 한다(물론 GPU를 통한 연산으로 보는 이득이 더 크다) 지금은 계산 셰이더로 하는 계산..

상수 버퍼, 구조화 버퍼, D3D11_BUFFER_DESC

상수 버퍼 : CPU에서 write해서 GPU로 보내주면 GPU에서는 Read만 가능 구조화 버퍼 : CPU에서 접근 가능 여부를 설정해줄 수 있으며, 이에 따라 바인딩해줘야 하는 자원 뷰(Resource View)가 다르다. 사용자 정의 구조체로 구성할 수 있으며, 대용량 버퍼를 셰이더로 넘겨줘야 할 때 적합 D3D11_USAGE enumeration 설명 D3D11_USAGE_DEFAULT GPU Read & Write -> RWStructuredBuffer에 사용 D3D11_USAGE_IMMUTABLE Only GPU Read(CPU Access, GPU Write 불가) D3D11_USAGE_DYNAMIC CPU Write, GPU Read만 가능 -> 상수 버퍼와 StructuredBuffer에..