분류 전체보기 73

[알고리즘] 부채꼴 충돌 검사 - 내적 문제

내적 한 벡터를 다른 벡터에 정사영시켜 그 힘의 값을 얻는 공식 a라는 줄을 b의 방향으로 당길때 발생하는 힘 v1과 v2를 내적하는 공식 v1 (a, b, c) v2 (k, h, w) a*k + b*h + c*w = v1 벡터의 크기 * v2 벡터의 크기 * cos세타 fabs(sqrt(a*a + b*b + c*c)) * fabs(sqrt(k*k + h*h + w*w)) * cos(r) 위 배경지식을 이용해 본 문제를 해결해보자. 본 문제는 리그오브레전드의 애쉬 스킬에 피격당하는 적을 판별하고 리스트에 담아서 리턴하는 문제이다. 그래프로 표현해보면 다음과 같다. 문제: 부채꼴 범위의 스킬을 사용하는 캐릭터가 있다 부채꼴 범위에 있다면 무조건 피격당하며 아닌 경우 피격당하지 않는다. 이때 피격을 당하는 ..

CS/알고리즘 2023.12.27

언리얼 프로파일링 참고 자료

https://devjino.tistory.com/372 [UE5] 최적화를 위한 프로파일링 사전 준비독립형 게임으로(Standalone Game) 플레이 일반적으로 쉽게 프로파일링을 할 수 있는 방법은 'Standalong Game'으로 게임을 실행 하는 것입니다. 그렇지만, 좀 더 정확한 프로파일링은 하기 위해서는 패키devjino.tistory.comhttps://choi-dan-di.github.io/unreal/optimization-profiling/ [Unreal Engine] 언리얼 엔진 최적화 - 1. 프로파일링언리얼 엔진의 최적화 방법에 대해 알아보기choi-dan-di.github.iohttps://velog.io/@huijae0817/%EC%96%B8%EB%A6%AC%EC%96%BC..

언리얼 2023.12.25

언리얼5 기본 셰이딩 따라하기 - 5 (Raymarching)

https://www.youtube.com/watch?v=dSY_8Ii-HcI Raymarching 이란? 일반적으로 정점정보와 텍스처 정보를 이용해 물체를 표현하지만 Raymarching은 정점 정보와 텍스처 정보가 없이 픽셀 단계에서 물체를 표현하는 기법 카메라의 거리를 이용해서 물체를 그려주는 방법 장점 - 교차점(각진 부분) 표현이 어려울 때 레이트레이싱보다 낫다. - Rasterized 렌더링에 비해 라이팅이 현실적이다. - 병렬화 계산(GPU 연산)에 적합하다. (각 광선은 다른 광선과 독립적으로 계산된다) - 곡면 필드 렌더링이 비교적 쉽다. 단점 - 복잡한 다각형 메시를 렌더링 할 때 레이트 레이싱보다 성능이 더 나쁘다. - Fragment / Compute 셰이더를 사용할 때 재귀성 문제..

언리얼/Shading 2023.12.25

언리얼5 기본 셰이딩 따라하기 - 4

https://www.youtube.com/watch?v=pF_5etchEvE 회전하는 마스킹 HLSL 코드 float result = 0; for (int i = 0; i < nSides; i++) { float angle = (i / nSides) * 2 * 3.14 + t; float2 pos = center + radius * float2(cos(angle), sin(angle)); result += length(pos - uv) < size; } return result; nSides: 그려질 원의 개수, angle: 그려질 원의 라디안 값 t: 시간 center: 원의 중심 pos: 원의 중심으로 부터 얼마나 떨어져 있는지 result: 원의 방정식을 이용해 원 그리기 ※ result를 계속해..

언리얼/Shading 2023.12.25

언리얼5 기본 셰이딩 따라하기 - 1

https://www.youtube.com/watch?v=lsXB1PQdGx0&t=133s 참고 영상 프로젝트 세팅 언리얼 버전: 5.3.2 블루 프린트 프로젝트 레이트레이싱X 스타트업X Game->3D프로젝트 새로운 머티리얼을 위와 같이 생성 Linear gradient: 리니어하게 U와 V를 증가시키는 함수. step(x,y) : x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴한다. 아래와 같이 노드를 완성하면 시간에 따라 오른쪽으로 커졌다가 왼쪽으로 갔다가 다시 오른쪽으로 커지는 형식으로 마스킹이 됨 HLSL코드로 변환 return(step((ceil(uv*10) / 10) - (sin(t)), 0.5)); Custom 노드 생성 후 아래와 같이 노드를 세팅 코드의 uv, t를 입력 이름에 u..

언리얼/Shading 2023.12.24

[C++ STL] 스마트 포인터

1. 스마트 포인터의 정의 C++는 C#과 Java와 다르게 힙영역에 동작 할당된 개체를 프로그래머가 직접 해제 해야한다. 이때 자동으로 해제와 동시에 해제된 참조 포인터를 nullptr로 변환해준다. 스마트 포인터는 운영체제 비트에 따라 4바이트 혹은 8바이트로 원시 포인터의 크기와 동일하다. 그리고 스마트 포인터가 데이터를 액섹스하는 속도는 원시 포인터와 크게 다르지 않다. 2. 스마트 포인터가 필요한 이유 가장 큰 이유는 "메모리 누수" 방지 차원에서 사용된다. 메모리 누수가 일어나면 할당 가능한 힙 영역이 줄어들게 되고 나중에는 할당할 공간이 모자르게 되면서 프로그램이 예기치 못하게 종료되는 상황이 발생한다. 스마트 포인터는 스택 메모리에 만들어지기 때문에 코드블럭을 나가게 되면 자동으로 스마트 ..

프로그래밍/CPP 2023.12.22

앤드류 후버만 루틴

1. 기상 후 1시간 전에 10~20분 햇빛 보기 - 해를 직접보지 말 것 - 실내에서는 최대한 밝게 지내고 잘 때는 최대한 어둡게 지내기 (문제 삼지 않으면 문제가 안된다) 2. 기상후 90~120분 사이에 카페인 섭취하지 않기 3. 기상후 SNS, 유튜브 하지 않기 우선 순위를 정해서 나중에 하기 4. 소금물 마시기 250ml에 소금물 한꼬집 5. 존2 운동 저강도 유산소 운동 빠르게 걷거나 조깅, 살짝 숨이 차지만 말은 가능한 상태 30분~1시간 운동 6. 90분 일하고 20분쉬기 20분 쉴 때 SNS나 TV 유튜브 ㄴㄴ, 밖에 나가서 산책하기, 명상 40분 집중하고 10분 쉬기 7. 간헐적 단식 상태, 아침에 안 먹기 8. NSDR과 낮잠 잠을 안자고 휴식하는 방법 20~30분으로 집중력을 얻어가..