2024/09 23

퐁라이팅

lighting은 물체와 빛 사이의 상호작용을 말한다. 사실적인 그래픽을 위해서 lighting이 매우 중요하다. 이러한 linghting 기법 중 하나인 퐁라이팅은 빛을 반사하는 것을 ambient, diffuse, specular, emissive 4가지로 나누어서 표현한다.diffuse는 난반사를 의미하며, 광원으로부터, 광원으로부터 점P까지의 벡터를 l, (normal vector 법선 벡터는 해당 직선이나 평면에서 수직인 벡터를 말한다) 점 P의 normal을 n으로 표현한다. 두 벡터 사이의 각이 작으면 작을수록 점 P는 더 많은 조명을 받게 될 것이다. 점 P로 들어오는 빛의 양은 두 벡터의 내적 값이라고 정의할 수 있다. 즉, 조명의 위치에 따라서 표면이 얼마나 밝아질 지를 정할 수 있다...

그래픽스/DX11 2024.09.30

힙 메모리 영역 특징

사용자가 메모리를 관리해야하는 영역이다.이러한 메모리 관리를 생명주기 관리라고도 한다. 힙은  동적으로 메모리를 관리하는 영역이다.즉 따라서 힙은 크기가 유동적이다.  지우는 건 빠른데 할당하는 건 스택보다 느리다.힙 메모리에 할당과 해제가 잦으면 메모리 단편화의 문제가 발생할 수 있다.

* const 와 reference

레퍼런스도 이제 어셈수준에서는 포인터와 똑같이 작동한다. c는 어셈블리어를 제외하면,가장 기계어와 가까운 고급언어이다. c에 없는 기능이 어떠한 언어에 추가되었다면,이는 사용자의 편의성에 의해 고급 (엔지니어 or) 프로그래머가 제작한 것이다. 그렇다면 c에 없는 c++에 있는 레퍼런스를 만드려 한다면 어떻게 만드는 것이 좋은가? * const 를 쓰면 된다. * const는 선언과 동시에 초기화해줘야하며,실제로 레퍼런스와 * const의 초기화 오류는 똑같이 작동된다.  다음과 같이 초기화 한 후에, 값을 바꿀 수 없다는 점, 포인터로 해당 기능을 만들 수 있다는 점은* const를 쓰면 C++의 레퍼런스와 같이 사용할 수 있다.

TSubclassOf와 TSoftObjectPtr의 차이점, 그리고 FSoftObjectPaths

비동기 애셋 로딩에 사용되는 TSoftObjectPtr, FSoftObjectPaths  FSoftObjectPaths 와 TSoftObjectPtr는 아티스트 혹은 디자이너가 하드 포인터와 같은UI를 사용해서 특정 애셋에 대한 레퍼런스를 만들되, 항상 로드되지 않도록 사용하기 위한 것이다.(= 좀 더 가볍게 쓰기 위한 것) FSoftObjectPaths는 UObject* 프로퍼티와 비슷하게 쓰는 것이고TSoftObjectPtr은 기본적으로 FSoftObjectPaths 를 감싸는 TWeakObjectPtr입니다.  TSubclassOf와 TSoftObjectPtr의 차이점 TSubclassOf와 TSoftObjectPtr는 즉UE에서 애셋과 클래스를 참조하는 데 사용되는 두 가지 서로 다른 방법입니다...

UE5 2024.09.26

함수 뒤에 const? 너 누군데

멤버 함수 뒤에 const를 붙이면const 키워드로 멤버 함수를 선언하면 함수가 자신이 호출되는 개체를 수정하지 않는 "읽기 전용" 함수로 지정하는 것이다. const 객체들은 const 맴버함수만 호출할수 있다.그렇다고 일반 객체는 const가 뒤에 있는 맴버함수도 가능하지 않다는 것은 아니다. int getMonth() const; // A read-only function 그럼 앞에 쓰면? 반환값을 상수화 하는 것이다.const int A(); // 반환값을 상수화한다. 주로 참조값으로 반환이기 때문에 const를 붙여줘야 할 때 쓰인다.  그럼 매개변수에 const는?매개변수를 call by reference일때 즉 참조값으로 받을때 사용한다.속도는 높이고 싶은데 참조값을 변경하기 싫을때..

DX11 HongLap - 무게중심좌표계 이론

Interpolation v1에서 v2까지의 거리가 있다고 가정했을 때.v0은 v1,v2 중간 어딘가에 있다,이때, v1에서 v0까지 거리를 a라고 할 때,v0에서 v2는 b이다. 그럼 v0이 v1에 가까워지면 b가 커지고,v0이 v2에 가까워지면 a가 커지는 것을 알 수 있다.이러한 v는 다음과 같이 표현할 수 있다. v = b/a+b* v1 + a/a+b *v2여기서 b/a+bv1을 w라고 표현하면, a/a+b * v2는 1-w로 표현할 수 있다.그럼 이제… 세 점 사이의 정 가운데 p가 있다고 해보자. 세 점은 각각 v1, v2, v3라 할 때p를 다음과 같이 표현할 수 있다. p = v1 + v2 + v3 / 3 = 1/3 v1 + 1/3 v2 + 1/3 v3= w1v1 + w2v2 + w3v3 ..

그래픽스/DX11 2024.09.24

프로그래머스 C++ Lv.2 퍼즐게임 (PCCP 기출문제 2번)

https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  이분탐색 쓸 생각 못했었는데 적용하는 계기가 되었다. #include #include #include #include using namespace std;bool Possiblelevel(int level, vector diffs, vector times, long long limit){ long long time_cur = times[0], time_prev = 0; long long..

프로그래머스 - Lv.1 동영상 재생기

코딩테스트 연습 - [PCCP 기출문제] 1번 / 동영상 재생기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  1. 10초 미만인 경우의 max값을 구한다.2. 오프닝 구간 사이에 있는 경우 오프닝 끝으로 계속 보내주는 걸 고려하기3. 시간이 최소 시간 이하인 경우, 최대 시간 이상인 경우 고려하기 string solution(string video_len, string pos, string op_start, string op_end, vector commands) { string answer ..