Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1096)

KoreanFoodie's Study

[C++ κ²Œμž„ μ„œλ²„] 1-3. atomic (μ›μžμ ) λ³€μˆ˜μ™€ μ—°μ‚°

[C++ κ²Œμž„ μ„œλ²„] 1-3. atomic 에 λŒ€ν•˜μ—¬ 핡심 : 1. ++, -- 같은 κ°„λ‹¨ν•œ μ—°μ‚°μ‘°μ°¨, 사싀 μ–΄μ…ˆλΈ”λ¦¬μ–΄μ—μ„œλŠ” 'κ°’ 볡사' -> 'λ³΅μ‚¬λœ 값에 μ—°μ‚° μˆ˜ν–‰' -> 'λ³΅μ‚¬λœ 값을 λ‹€μ‹œ λŒ€μž…' 같은 κ³Όμ •μœΌλ‘œ μͺΌκ°œμ§„λ‹€ 2. λ§Œμ•½ νŠΉμ • 연산이 진행 쀑일 경우, λ‹€λ₯Έ 연산이 끼어듀지 μ•Šλ„λ‘ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄, ν•΄λ‹Ή λ³€μˆ˜λ₯Ό atomic 으둜 μ„ μ–Έν•  수 μžˆλ‹€. 3. 일반적으둜 atomic 연산은 일반 연산보닀 λŠλ¦¬λ―€λ‘œ, λ‚¨μš©μ€ μ§€μ–‘ν•˜μ—¬μ•Ό ν•œλ‹€. μ–΄λ–€ 연산이 atomic (μ›μžμ ) 으둜 μ΄λ£¨μ–΄μ§„λ‹€λŠ” 것은, ν•΄λ‹Ή 연산이 μ§„ν–‰λ˜λŠ” 쀑간에 λ‹€λ₯Έ 연산이 λ™μ‹œμ— μ§„ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 이전에 μ—¬λŸ¬ μ“°λ ˆλ“œλ“€μ΄ 곡유 μžμ›μ— μ ‘κ·Όν•˜λ € ν•  λ•Œ Race Condition 이 λ°œμƒν•  수 μžˆλ‹€κ³  μ΄μ•ΌκΈ°ν•œ 적이 μžˆλŠ”λ°, ..

Game Dev/Game Server 2023. 7. 10. 16:15
[C++ κ²Œμž„ μ„œλ²„] 1-1. λ©€ν‹°μ“°λ ˆλ“œ 개둠

[C++ κ²Œμž„ μ„œλ²„] 1-1. λ©€ν‹°μ“°λ ˆλ“œ 개둠 핡심 : 1. λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž˜λ°μ€ 식당을 μš΄μ˜ν•˜λŠ” 것과 λΉ„μŠ·ν•˜λ‹€. ν…Œμ΄λΈ”μ„ ν”„λ‘œμ„ΈμŠ€, ν…Œμ΄λΈ”μ—μ„œ μΌν•˜λŠ” 직원을 μ“°λ ˆλ“œ, μ˜ν˜Όμ„ 코어라고 μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€. 2. μ“°λ ˆλ“œλŠ” νž™ μ˜μ—­μ„ κ³΅μœ ν•˜μ§€λ§Œ, 각각의 정보λ₯Ό μŠ€νƒμ— μ €μž₯ν•œλ‹€. λ”°λΌμ„œ νž™ μ˜μ—­μ— μ ‘κ·Όν•  λ•ŒλŠ” Race Condition 이 λ°œμƒν•  수 μžˆλ‹€. λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž˜λ°μ€ 식당을 μš΄μ˜ν•˜λŠ” 것과 λΉ„μŠ·ν•˜λ‹€. ν…Œμ΄λΈ”μ„ ν”„λ‘œκ·Έλž¨, 직원을 μ“°λ ˆλ“œ, μ˜ν˜Όμ„ CPU 코어라고 μƒκ°ν•˜μž. 그럼 영혼이 μ§μ›μ—κ²Œ λ“€μ–΄κ°€μ•Ό ν”„λ‘œκ·Έλž¨μ΄ λŒμ•„κ°ˆ 것이닀. 이제 μš°λ¦¬κ°€ ν•΄μ•Ό ν•  일은, μ˜ν˜Όμ„ μ§μ›μ—κ²Œ μ–΄λ–»κ²Œ λΆ„λ°°ν•΄μ•Ό 쒋을지 ꡬ쑰λ₯Ό μ„€κ³„ν•˜κ³  μ½”λ“œλ₯Ό μ§œλŠ” 것이닀! μ‹€μ œλ‘œ μœ„μ˜ μŠ€μƒ·μ²˜λŸΌ, CPU μ½”μ–΄λ₯Ό 적절히 λ°°λΆ„ν•˜λ©΄μ„œ μƒκΈ°λŠ” 문제λ₯Ό 잘..

Game Dev/Game Server 2023. 7. 7. 17:41
[언리얼] μŠ€ν¬λ‘€λ°•μŠ€μ—μ„œ μ™Όμͺ½ 클릭으둜 λ“œλž˜κ·Έν•˜κΈ°

[언리얼] μŠ€ν¬λ‘€λ°•μŠ€μ—μ„œ μ™Όμͺ½ 클릭으둜 λ“œλž˜κ·Έν•˜κΈ° 핡심 : 1. UScrollBox μ—μ„œλŠ” κΈ°λ³Έμ μœΌλ‘œλŠ” 였λ₯Έμͺ½ 클릭을 톡해 μž‘μ•„λŒκΈ°(마우슀 클릭으둜 λ“œλž˜κ·Έ) κ°€ κ°€λŠ₯ν•˜λ‹€. 2. 쒌클릭으둜 λ“œλž˜κ·Έλ₯Ό ν™œμ„±ν™” ν•˜λ €λ©΄, ν•˜μœ„ μœ„μ ―μ— λ²„νŠΌμ„ λ„£κ³ , λ²„νŠΌμ—μ„œ Click Method / Touch Method 섀정을 각각 Precise Click, Precise Tap 으둜 λ°”κΎΈμ–΄ μ£Όλ©΄ λœλ‹€. 3. μžμ„Έν•œ 것은 μ˜μƒ μ°Έμ‘°. UScrollBox μ—μ„œ 쒌클릭으둜 μŠ€ν¬λ‘€μ„ ν•˜κ³  μ‹ΆμœΌλ©΄, UScrollBox μ•„λž˜μ— λ²„νŠΌμ„ λ§Œλ“€κ³ , λ²„νŠΌμ˜ 속성을 μœ„μ™€ 같이 λ³€κ²½ν•΄ μ£Όλ©΄ λœλ‹€. 참고둜, Horizontal ν•˜κ²Œ μ•„μ΄ν…œμ„ 담을 λ•ŒλŠ” WrapBox λ₯Ό, Vertical ν•˜κ²Œ μ•„μ΄ν…œμ„ 담을 λ•ŒλŠ” VerticalBox λ₯Ό UScrol..

Game Dev/Unreal C++ : Dev Log 2023. 7. 1. 07:41
[언리얼] UnrealVS 둜 λ©”λͺ¨λ¦¬ 이슈 μ˜ˆλ°©ν•˜κΈ° (-stompMalloc)

[언리얼] UnrealVS 둜 λ©”λͺ¨λ¦¬ 이슈 μ˜ˆλ°©ν•˜κΈ° (-stompMalloc) 핡심 : 1. Stomp Allocator 둜 잠재적인 λ©”λͺ¨λ¦¬ 이슈λ₯Ό μž‘μ•„λ‚Ό 수 μžˆλ‹€. 2. 바인딩을 꼬리물기처럼 λ§Œλ“€λ©΄ μ•ˆλœλ‹€(μƒμœ„ > μ€‘μœ„ > ν•˜μœ„ μœ„μ ― 순으둜 μ—΄λ¦¬λŠ” 경우, 같은 νƒ€μž…μ˜ λΈλ¦¬κ²Œμ΄νŠΈκ°€ λ°”μΈλ”©λ˜λ©΄ μ•ˆλ¨) 3. stompmalloc 은 μ‹€μ œ 가상 λ©”λͺ¨λ¦¬ λŒ€μ‹  물리 λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— ν• λ‹Ή/ν•΄μ œ μž‘μ—…μ„ μ§μ ‘μ μœΌλ‘œ ν•˜λ„λ‘ 도와쀀닀. κ²Œμž„μ„ λ‹€ λ§Œλ“€κ³  λ‚˜μ„œ 싀행을 ν–ˆλŠ”λ°, 자꾸 ν¬λž˜μ‹œκ°€ λ‚˜μ„œ κ²Œμž„μ΄ 꺼져버리면 맀우 ν—ˆλ§ν•  것이닀. 특히 λ©”λͺ¨λ¦¬ 이슈의 경우, μ •ν™•νžˆ μ–΄λ””μ„œ λ©”λͺ¨λ¦¬κ°€ μ˜€μ—Όλ˜μ—ˆλŠ”μ§€ 개발 λ‹¨κ³„μ—μ„œλŠ” νŒŒμ•…ν•˜κΈ°κ°€ 맀우 μ–΄λ ΅κ³  ν…ŒμŠ€νŠΈ λΉ„μš©μ΄ 큰 νŽΈμ΄λ‹€. λ©”λͺ¨λ¦¬ 이슈λ₯Ό λ””λ²„κΉ…ν•˜κΈ° μœ„ν•œ 쒋은 방법이 ν•˜λ‚˜ μžˆλŠ”λ°, λ°”λ‘œ U..

Game Dev/Unreal C++ : Dev Log 2023. 6. 15. 14:42
[OpenGL ES] 18κ°• : GPU ν…Œμ…€λ ˆμ΄μ…˜(Tessellation), λ³€μœ„ 맀핑(Displacement Mapping), 컨트둀 쉐이더, ν…Œμ…€λ ˆμ΄ν„°, 생성 쉐이더, PN-μ‚Όκ°ν˜•

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. GPU ν…Œμ…€λ ˆμ΄μ…˜μ„ μ΄μš©ν•΄ λ³΅μž‘ν•œ ν‘œλ©΄μ„ μ‹€μ‹œκ°„μ— 생성할 수 μžˆλŠ”λ°, λŒ€ν‘œμ μœΌλ‘œ λ³€μœ„ 맀핑(Displacement Mapping) κ³Ό PN-μ‚Όκ°ν˜•μ΄ μžˆλ‹€. μ‹€μ œλ‘œλŠ” λ³€μœ„ 맀핑을 많이 μ‚¬μš©ν•œλ‹€. 2. λ¨Όμ €, 컨트둀 μ‰μ΄λ”λŠ” 패치(patch) 정보λ₯Ό λ°›μ•„, ν…Œμ…€λ ˆμ΄μ…˜μ„ μ–Όλ§ˆλ‚˜ 잘게 μͺΌκ°œ 진행할지λ₯Ό ν…Œμ…€λ ˆμ΄ν„°μ—κ²Œ μ•Œλ €μ€€λ‹€. 그럼 ν…Œμ…€λ ˆμ΄ν„°λŠ” λ ˆλ²¨μ— 맞게 패치λ₯Ό μͺΌκ°œ μ •μ˜μ—­(Domain) 을 μƒμ„±ν•œλ‹€. 생성 μ‰μ΄λ”λŠ” 2차원 λ©”μ‹œμ˜ 각 μ •μ λ§ˆλ‹€ μ‚¬κ°ν˜• 패치의 ν•œ 점을 μƒμ„±ν•œ ν›„, ν•˜μ΄νŠΈ 맡(..

Game Dev/OpenGL ES 2023. 5. 19. 17:50
[OpenGL ES] 17κ°• : 베지어 곑선, λ“œ μΉ΄μŠ€ν…”μ‘° μ•Œκ³ λ¦¬μ¦˜, ν—ˆλ°‹(Hermit) 곑선, Bilinear Patch, 베지어 μ‚Όκ°ν˜•

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. 베지어 곑선은, 주어진 정점(control point)을 μž‡λŠ” 곑선이닀. 점이 N 개 μžˆμ„λ•Œ, N-1 μ°¨ 베지어 곑선을 λ§Œλ“€ 수 μžˆλŠ”λ°, κ·Έλƒ₯ μ„ ν˜• 보간을 μ—¬λŸ¬ 번 λ°˜λ³΅ν•΄μ„œ μ·¨ν•˜λ©΄ λœλ‹€. 이 기법을 λ“œ μΉ΄μŠ€ν…”μ‘° μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³  ν•œλ‹€. 2. ν…Œμ…€λ ˆμ΄μ…˜μ€, 컴퓨터가 곑선 및 곑면을 μ²˜λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ, 베지어 곑선 및 곑면을 μž‘μ€ μ„ λΆ„μ΄λ‚˜ 폴리곀의 μ‘°ν•©μœΌλ‘œ μͺΌκ°œλŠ” 과정을 μ˜λ―Έν•œλ‹€. 간격이 μž‘μ„ 수둝 더 λ§€λˆν•œ 곑면을 λ§Œλ“€ 수 μžˆμ„ 것이닀. 컨트둀 포인트λ₯Ό κΈ°μ€€μœΌλ‘œ μ„ ν˜• 보간을 λ°˜λ³΅ν•˜μ—¬ 패치..

Game Dev/OpenGL ES 2023. 5. 18. 01:19