icon
6장 : 나이아가라 렌더링 기본 기법

파티클과 조명 상호작용 기본 이해


나이아가라 파티클은 단순히 화면에 이미지를 띄우는 것을 넘어, 게임 월드 내의 **조명(Lighting)**과 상호작용하여 더욱 현실적이고 몰입감 있는 시각 효과를 만들어낼 수 있습니다. 파티클이 빛을 받거나, 그림자를 드리우거나, 혹은 스스로 빛을 내어 주변 환경을 밝히는 것은 효과의 '생명력'을 더하는 중요한 요소입니다.

이 절에서는 나이아가라 파티클이 조명과 어떻게 상호작용하는지, 그리고 이를 제어하기 위한 기본적인 설정과 기법에 대해 알아보겠습니다.


파티클 셰이딩 모델과 조명 반응

파티클 머티리얼의 셰이딩 모델(Shading Model) 은 파티클이 빛에 어떻게 반응할지를 결정합니다.

  • Unlit (언릿)
    • 특징: 가장 흔하게 사용되는 파티클 셰이딩 모델입니다. 파티클 자체가 빛을 발하는 것처럼 보이게 하며, 주변 조명 환경의 영향을 받지 않습니다.
    • 장점: 렌더링 비용이 낮고, 조명 변화에 관계없이 일관된 시각적 효과를 유지합니다. 폭발, 마법 효과, 연기, 불꽃 등 자체 발광하는 효과에 적합합니다.
    • 설정: 머티리얼 에디터의 Details 패널에서 Material 섹션의 Shading ModelUnlit으로 설정합니다. 색상 정보는 주로 Emissive Color 핀에 연결합니다.
  • Default Lit (기본 릿) 또는 다른 릿 셰이딩 모델:
    • 특징: 파티클이 주변 조명에 반응하여 그림자가 지거나, 하이라이트가 생기는 등 실제 3D 오브젝트처럼 빛의 영향을 받습니다.
    • 장점: 파편, 낙엽, 먼지 입자처럼 물리적인 오브젝트 느낌을 주거나, 빛의 방향에 따라 다르게 보여야 하는 효과에 현실감을 더합니다.
    • 단점: Unlit보다 렌더링 비용이 높습니다. 특히 많은 파티클에 적용할 경우 성능 저하를 유발할 수 있습니다. 렌더러가 Mesh Renderer일 때 주로 사용됩니다.
    • 설정: 머티리얼 에디터에서 Shading ModelDefault Lit로 설정합니다. Base Color, Roughness, Metallic, Normal 등 릿(Lit) 머티리얼 속성을 활용하여 빛과의 상호작용을 정의합니다.

대부분의 파티클 효과는 Unlit 셰이딩 모델을 사용하여 성능을 확보하고 원하는 발광 효과를 표현합니다. Default Lit은 특정 파편이나 환경 파티클에만 제한적으로 사용합니다.


그림자 드리우기 (Cast Shadows)

파티클이 주변 환경에 그림자를 드리우게 할 수도 있습니다. 이는 효과에 깊이감과 현실감을 더하지만, 렌더링 비용이 매우 높습니다.

  • 설정

    나이아가라 시스템의 렌더러 모듈 (예: Sprite Renderer, Mesh Renderer)을 선택합니다.

    디테일(Details) 패널에서 Rendering 섹션 아래의 Cast Shadows 옵션을 찾습니다.

    이 옵션을 활성화하면 파티클이 광원에서 오는 빛에 반응하여 그림자를 생성합니다.

  • 고려 사항
    • Cast ShadowsUnlit 머티리얼에는 일반적으로 적용되지 않습니다. Default Lit 셰이딩 모델을 사용하는 머티리얼과 함께 사용해야 합니다.
    • 동적 그림자는 매우 비싼 연산이므로, 꼭 필요한 경우에만, 그리고 파티클 수가 적을 때 제한적으로 사용해야 합니다. 폭발의 섬광 그림자처럼 짧게 나타나는 효과에 적합합니다.

실제 빛 방출하기: Light Renderer

파티클 자체가 주변을 밝히는 실제 동적 라이트(Dynamic Light) 를 생성하게 하려면 Light Renderer 를 사용합니다.

  • 렌더러 추가: 나이아가라 이미터의 Render 섹션에 Light Renderer 모듈을 추가합니다.
  • 주요 속성
    • Color: 파티클이 방출할 빛의 색상을 정의합니다. (나이아가라의 Particles.Color 속성과 연동 가능)
    • Intensity: 빛의 밝기(강도)를 조절합니다.
    • Radius: 빛이 영향을 미치는 반경을 조절합니다.
    • Cast Shadows: Light Renderer가 생성하는 빛이 그림자를 드리울지 여부를 결정합니다. (매우 비싸므로 신중)
  • 활용
    • 폭발이나 총격 시 발생하는 순간적인 섬광.
    • 마법 구체, 발광하는 생물체 등 자체적으로 빛을 내는 오브젝트 효과.
    • 불꽃이나 모닥불에서 나오는 주변 조명 효과.
  • 성능 고려 사항
    • Light Renderer는 나이아가라 렌더러 중 가장 높은 성능 비용을 가집니다. 각 파티클이 실제 동적 라이트를 생성하기 때문에, 파티클 수가 많아질수록 프레임 레이트가 급격히 떨어질 수 있습니다.
    • 가능한 한 소수의 파티클에만 Light Renderer를 적용하고, IntensityRadius를 최소화하며, Cast Shadows는 비활성화하는 것이 좋습니다.
    • 빛의 깜빡임이나 강도 변화는 파티클의 NormalizedAge를 기반으로 Curve를 사용하여 Intensity를 조절하는 것이 일반적입니다.

직접 해보기: 발광하는 파티클과 주변 조명 효과

이전에 만들었던 NS_BasicSpawn 시스템에 Light Renderer를 추가하여 파티클이 주변을 밝히도록 만들어 보겠습니다.

NS_BasicSpawn 시스템을 엽니다. (혹은 새로운 시스템을 만들어 Spawn Rate, Initialize Particle, Add Velocity 모듈을 추가하고 파티클이 어느 정도 퍼지도록 설정합니다.)

Particle Spawn 섹션의 Initialize Particle 모듈에서 ColorVector4로 설정하고 밝은 노란색 또는 주황색(R:1, G:0.5, B:0, A:1)으로 설정합니다.

Render 섹션으로 이동합니다. 기존의 Sprite Renderer는 그대로 두어도 됩니다.

Render 섹션 아래의 + 버튼을 클릭하고 Light Renderer 를 검색하여 추가합니다.

Light Renderer를 선택합니다.

디테일(Details) 패널에서 다음 속성을 조절합니다.

  • Color: Particles.Color에 연결되어 있을 것입니다. (나이아가라 파티클의 색상과 연동)
  • Intensity: 초기 값을 1000.0 정도로 설정합니다.
  • Radius: 초기 값을 200.0 정도로 설정합니다.
  • Cast Shadows: 비활성화합니다. (성능을 위해)

이제 Intensity를 파티클의 수명에 따라 변화시켜 빛이 점차 사라지도록 해보겠습니다.

  • Intensity 속성 옆의 드롭다운 메뉴를 클릭하고 Float From Curve 를 선택합니다.
  • 나타나는 커브 에디터에서 다음 키를 설정합니다.
    • Time: 0.0, Value: 1.0 (시작 시점: 최대 밝기)
    • Time: 1.0, Value: 0.0 (끝 시점: 빛 소멸)
  • 커브를 부드럽게 조정하여 빛이 자연스럽게 꺼지도록 합니다.

이제 뷰포트에서 파티클이 생성될 때 주변에 밝은 노란빛을 방출하다가, 파티클이 사라지면서 빛도 함께 사라지는 것을 확인할 수 있을 겁니다. 시스템을 어두운 배경에 배치하거나, 어두운 실내에서 테스트하면 효과가 더 명확하게 보일 것입니다.


나이아가라 파티클과 조명 간의 상호작용은 시각 효과에 깊이와 생동감을 더하는 강력한 기능입니다. 하지만 그만큼 성능에 미치는 영향이 크므로, Unlit 머티리얼, 제한적인 Cast Shadows, 그리고 Light Renderer의 신중한 사용을 통해 시각적 품질과 성능 사이의 균형을 맞추는 것이 중요합니다.