04. 포인터와 문자열
·
프로그래밍 언어/C
🧠 포인터와 문자열🧩 포인터는32비트 시스템에서는 4바이트를 가지며,64비트 시스템에서는 8바이트 크기를 가진다.🧵 문자열(String)은 끝에 '\0'이라는 널 문자(null character)를 포함한다.🔒 포인터가 가리키는 값은 변경 가능하지만, 배열 이름은 포인터 상수이기 때문에 그 값을 변경할 수 없다.🔍 문자열 선언 방식의 차이🧱 배열 방식char str1[] = "My string"; // str1은 포인터 상수 (주소 값 변경 X)char * const str2 = str1; // 위와 동일📦 문자열 "My string"이 배열로 복사되어 저장됨str은 배열 이름이며, 해당 문자열 데이터를 직접 포함✅ 각 문자는 수정 가능 (예: str[0] = 'm';)❌ str은 포인터 ..
03. 자료형 변환 (Type casting)
·
프로그래밍 언어/C
📘 C 언어의 자료형 변환 (형변환 정리)형변환은 크게 다음 두 가지로 나뉜다:자동 형변환(암시적) 명시적 형변환(강제)✅ 자동 형변환 (Implicit Casting)컴파일러가 형이 다른 값들끼리의 연산 또는 대입에서 자동으로 자료형을 변환해주는 것을 의미한다.🔸 대입 연산 시 자동 형변환정수 → 실수: 실수의 표현 범위가 넓기 때문에 손실 없이 변환 가능 단, 부동소수점 오차는 존재할 수 있다.실수 → 정수: 소수부가 잘림 (반올림 X)큰 정수 → 작은 정수: 상위 바이트가 손실될 수 있다. (예: int → char 변환)📌 float 값을 int에 대입할 때 주의점소수점 이하가 절삭된다. (반올림 ❌)float는 큰 정수를 정확히 표현할 수 없다. (유효숫자 한계)float 값이 int의 표..
[ Fluid Simulation ] 05. 화면 공간 유체 렌더링을 위한 좁은 범위 필터 (Narrow-Range Filter for Screen-Space Fluid Rendering)
·
물리 기반 시뮬레이션/Fluid Simulation
🔍 Narrow-Range Filter for Screen-Space Fluid Rendering이전에 구현했던 Screen-Space Rendering 방식은 다음과 같이 불연속 공간에서 왜곡이 발생한다.이는 깊이 이미지를 생성할 때 진행하는 smoothing 과정에 의해 발생되는 것이다.따라서, 이를 해결하기 위해 좁은 범위의 필터링 과정을 거쳐 해결한다. 과정은 다음과 같다.1. Limiting the Depth Range2. Bias Correction3. Dynamic Range Adjustment4. Separable Filter Approximation 📏 Limiting the Depth Range기존의 screen-space fluid rendering에서는 smoothing 필터가..
[ Fluid Simulation ] 04. 유체의 화면 공간 렌더링 기법 (Screen-Space Fluid Rendering)
·
물리 기반 시뮬레이션/Fluid Simulation
💠 Screen Space Fluid Rendering기존의 유체 렌더링 방식 중 하나인 Marching Cubes와 같은 볼륨 기반 표면 재구성 기법은, 복잡한 연산량으로 인해 성능적인 한계를 보인다.이를 해결하기 위해 본 프로젝트에서는 GLSL 쉐이더를 활용한 Screen Space Fluid Rendering 기법을 채택한다. 이 방식은 GPU의 병렬 처리 능력을 활용하여 연산을 하드웨어 가속하고, 화면 공간 상에서 직접 유체의 깊이와 두께(Thickness)를 재구성함으로써 렌더링 성능을 비약적으로 향상시키는 동시에 시각적 품질 또한 유지 또는 개선할 수 있습니다. 과정은 다음과 같다:1. 입자 정보 수집2. Depth 이미지 버퍼 생성3. Depth smoothing (optional blur..