파티클과 조명 상호작용 기본 이해
나이아가라 파티클은 단순히 화면에 이미지를 띄우는 것을 넘어, 게임 월드 내의 **조명(Lighting)**과 상호작용하여 더욱 현실적이고 몰입감 있는 시각 효과를 만들어낼 수 있습니다. 파티클이 빛을 받거나, 그림자를 드리우거나, 혹은 스스로 빛을 내어 주변 환경을 밝히는 것은 효과의 '생명력'을 더하는 중요한 요소입니다.
이 절에서는 나이아가라 파티클이 조명과 어떻게 상호작용하는지, 그리고 이를 제어하기 위한 기본적인 설정과 기법에 대해 알아보겠습니다.
파티클 셰이딩 모델과 조명 반응
파티클 머티리얼의 셰이딩 모델(Shading Model) 은 파티클이 빛에 어떻게 반응할지를 결정합니다.
Unlit
(언릿)- 특징: 가장 흔하게 사용되는 파티클 셰이딩 모델입니다. 파티클 자체가 빛을 발하는 것처럼 보이게 하며, 주변 조명 환경의 영향을 받지 않습니다.
- 장점: 렌더링 비용이 낮고, 조명 변화에 관계없이 일관된 시각적 효과를 유지합니다. 폭발, 마법 효과, 연기, 불꽃 등 자체 발광하는 효과에 적합합니다.
- 설정: 머티리얼 에디터의
Details
패널에서Material
섹션의Shading Model
을Unlit
으로 설정합니다. 색상 정보는 주로Emissive Color
핀에 연결합니다.
Default Lit
(기본 릿) 또는 다른 릿 셰이딩 모델:- 특징: 파티클이 주변 조명에 반응하여 그림자가 지거나, 하이라이트가 생기는 등 실제 3D 오브젝트처럼 빛의 영향을 받습니다.
- 장점: 파편, 낙엽, 먼지 입자처럼 물리적인 오브젝트 느낌을 주거나, 빛의 방향에 따라 다르게 보여야 하는 효과에 현실감을 더합니다.
- 단점:
Unlit
보다 렌더링 비용이 높습니다. 특히 많은 파티클에 적용할 경우 성능 저하를 유발할 수 있습니다. 렌더러가Mesh Renderer
일 때 주로 사용됩니다. - 설정: 머티리얼 에디터에서
Shading Model
을Default Lit
로 설정합니다.Base Color
,Roughness
,Metallic
,Normal
등 릿(Lit) 머티리얼 속성을 활용하여 빛과의 상호작용을 정의합니다.
대부분의 파티클 효과는 Unlit
셰이딩 모델을 사용하여 성능을 확보하고 원하는 발광 효과를 표현합니다. Default Lit
은 특정 파편이나 환경 파티클에만 제한적으로 사용합니다.
그림자 드리우기 (Cast Shadows)
파티클이 주변 환경에 그림자를 드리우게 할 수도 있습니다. 이는 효과에 깊이감과 현실감을 더하지만, 렌더링 비용이 매우 높습니다.
- 설정
나이아가라 시스템의 렌더러 모듈 (예:
Sprite Renderer
,Mesh Renderer
)을 선택합니다.디테일(Details) 패널에서
Rendering
섹션 아래의Cast Shadows
옵션을 찾습니다.이 옵션을 활성화하면 파티클이 광원에서 오는 빛에 반응하여 그림자를 생성합니다.
- 고려 사항
Cast Shadows
는Unlit
머티리얼에는 일반적으로 적용되지 않습니다.Default Lit
셰이딩 모델을 사용하는 머티리얼과 함께 사용해야 합니다.- 동적 그림자는 매우 비싼 연산이므로, 꼭 필요한 경우에만, 그리고 파티클 수가 적을 때 제한적으로 사용해야 합니다. 폭발의 섬광 그림자처럼 짧게 나타나는 효과에 적합합니다.
실제 빛 방출하기: Light Renderer
파티클 자체가 주변을 밝히는 실제 동적 라이트(Dynamic Light) 를 생성하게 하려면 Light Renderer
를 사용합니다.
- 렌더러 추가: 나이아가라 이미터의
Render
섹션에Light Renderer
모듈을 추가합니다. - 주요 속성
Color
: 파티클이 방출할 빛의 색상을 정의합니다. (나이아가라의Particles.Color
속성과 연동 가능)Intensity
: 빛의 밝기(강도)를 조절합니다.Radius
: 빛이 영향을 미치는 반경을 조절합니다.Cast Shadows
:Light Renderer
가 생성하는 빛이 그림자를 드리울지 여부를 결정합니다. (매우 비싸므로 신중)
- 활용
- 폭발이나 총격 시 발생하는 순간적인 섬광.
- 마법 구체, 발광하는 생물체 등 자체적으로 빛을 내는 오브젝트 효과.
- 불꽃이나 모닥불에서 나오는 주변 조명 효과.
- 성능 고려 사항
Light Renderer
는 나이아가라 렌더러 중 가장 높은 성능 비용을 가집니다. 각 파티클이 실제 동적 라이트를 생성하기 때문에, 파티클 수가 많아질수록 프레임 레이트가 급격히 떨어질 수 있습니다.- 가능한 한 소수의 파티클에만
Light Renderer
를 적용하고,Intensity
와Radius
를 최소화하며,Cast Shadows
는 비활성화하는 것이 좋습니다. - 빛의 깜빡임이나 강도 변화는 파티클의
NormalizedAge
를 기반으로Curve
를 사용하여Intensity
를 조절하는 것이 일반적입니다.
직접 해보기: 발광하는 파티클과 주변 조명 효과
이전에 만들었던 NS_BasicSpawn
시스템에 Light Renderer
를 추가하여 파티클이 주변을 밝히도록 만들어 보겠습니다.
NS_BasicSpawn
시스템을 엽니다. (혹은 새로운 시스템을 만들어 Spawn Rate
, Initialize Particle
, Add Velocity
모듈을 추가하고 파티클이 어느 정도 퍼지도록 설정합니다.)
Particle Spawn
섹션의 Initialize Particle
모듈에서 Color
를 Vector4
로 설정하고 밝은 노란색 또는 주황색(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
의 신중한 사용을 통해 시각적 품질과 성능 사이의 균형을 맞추는 것이 중요합니다.