파티클과 조명 상호작용 기본 이해
Lit 셰이딩·그림자·이미시브 머티리얼·Light Renderer가 파티클과 주변 조명에 미치는 시각 효과와 비용을 비교합니다.
나이아가라 파티클은 조명과 상호작용할 수 있으며, 파티클 조명과 그림자 설정은 시각 품질과 비용을 함께 확인해야 합니다.
이 절에서는 나이아가라 파티클이 조명과 어떻게 상호작용하는지, 그리고 이를 제어하기 위한 기본적인 설정과 기법에 대해 알아보겠습니다.
파티클 조명은 밝기와 현실감을 올리지만 라이트 수, 그림자, 반경이 곧 비용이 된다. 대부분은 Unlit로 시작하고, 필요한 효과에만 Lit과 Light Renderer를 제한적으로 붙인다.
- Unlit
마법, 불꽃, 연기처럼 자체 발광 중심.
- Lit
파편과 먼지처럼 환경 조명이 필요할 때.
- Light
주변을 실제로 밝히는 순간에만 사용.
- Shadow
그림자는 품질과 비용을 함께 본다.
| 방식 | 좋은 상황 | 비용 요인 | 제한 기준 |
|---|---|---|---|
| Unlit | 대부분의 이펙트 기본값 | 투명도와 오버드로우 | 알파와 스프라이트 크기 |
| Default Lit | 물리 파편, 환경 먼지 | 조명 계산, 노멀, 그림자 | 입자 수와 화면 점유율 |
| Light Renderer | 폭발 순간, 전기 스파크 | 동적 라이트 수와 반경 | 수명 짧게, 반경 작게 |
파티클 셰이딩 모델과 조명 반응
Unlit, Lit, Additive, Translucent 선택은 보이는 색뿐 아니라 조명 반응과 정렬 비용까지 바꾼다.
| 선택 | 의미 | 맞는 효과 | 주의점 |
|---|---|---|---|
| Unlit | 장면 조명과 무관하게 자체 색 유지 | 불꽃, 마법, UI성 이펙트 | 실제 표면 조명과는 분리됨 |
| Lit | 장면 조명과 Normal에 반응 | 먼지, 파편, 물질감 있는 입자 | 조명 계산과 머티리얼 비용 증가 |
| Additive | 배경에 밝기를 더함 | 스파크, 에너지, 섬광 | 과한 발광과 노출 영향 |
| Translucent | 알파로 배경과 섞임 | 연기, 안개, 물방울 | 정렬 문제와 오버드로우 확인 |
파티클 머티리얼의 셰이딩 모델(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를 조절하는 것이 일반적입니다.
Emissive, Default Lit, Light Renderer를 섞어 부르면 비용과 결과를 오해하므로 역할을 나누어 읽는다.
| 경로 | 하는 일 | 주요 설정 | 비용·오해 |
|---|---|---|---|
| 보이는 빛 | 화면에서 파티클이 빛나 보임 | Unlit, Emissive, Bloom | 벽과 캐릭터를 실제로 밝히지는 않음 |
| 받는 빛 | 파티클 표면이 장면 조명에 반응 | Default Lit, Normal, Roughness | 조명 계산 비용이 추가됨 |
| 내는 빛 | 파티클이 실제 동적 라이트 생성 | Light Renderer, Radius, Intensity | 파티클 수만큼 조명 비용 증가 |
| 튜닝 기준 | 세 경로를 따로 켜고 비교 | Bloom, Shading, Light Count | 한꺼번에 켜면 병목 원인을 놓침 |
직접 해보기: 발광하는 파티클과 주변 조명 효과
이전에 만들었던 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(끝 시점: 빛 소멸)
- 커브를 부드럽게 조정하여 빛이 자연스럽게 꺼지도록 합니다.
이제 뷰포트에서 파티클이 생성될 때 주변에 밝은 노란빛을 방출하다가, 파티클이 사라지면서 빛도 함께 사라지는 것을 확인할 수 있을 겁니다.
시스템을 어두운 배경에 배치하거나, 어두운 실내에서 테스트하면 효과가 더 명확하게 보일 것입니다.
Emissive는 파티클 자체를 밝게 보이게 하고 Light Renderer는 주변 장면을 실제로 밝힌다. 두 경로를 분리한 뒤 합쳐서 검증한다.
- Emissive 기준
Light를 끈 상태에서 파티클 자체 밝기를 먼저 맞춘다.
- 작은 Light 추가
짧은 반경과 낮은 강도로 주변 영향만 보탠다.
- 수명 동기화
파티클 소멸과 Light의 Lifetime을 같은 타이밍으로 맞춘다.
- 장면·비용 테스트
밝은/어두운 배경과 이동 카메라에서 과노출·GPU 비용을 본다.
| 경로 | 담당 | 주 조절값 | 비용 경계 |
|---|---|---|---|
| Material Emissive | 파티클 자체의 밝기·색 | Emissive 강도·Alpha | 겹침·과노출 |
| Light Renderer | 주변 표면의 조명 | Radius·Intensity·Lifetime | 동적 라이트 수·그림자 |
나이아가라 파티클과 조명 간의 상호작용은 이펙트가 장면 조명에 반응하도록 만드는 기능입니다.
성능 비용이 크므로 Unlit 머티리얼, 제한적인 Cast Shadows, Light Renderer 사용 범위를 함께 조정해야 합니다.
다음 다이어그램은 나이아가라 파티클 조명을 사용할 때 셰이딩 모델, Light Renderer, 그림자, 수명 곡선을 함께 점검하는 기준입니다.
Light Renderer와 셰이딩 모델은 장면 깊이를 만들지만 그림자와 반경 설정이 곧 성능 비용이 됩니다.
- model셰이딩 모델
model Unlit, Default Lit, Translucent 조합이 조명 반응과 머티리얼 비용을 결정합니다.
- lightLight Renderer
light 짧은 섬광처럼 적은 수의 파티클에만 붙이고 Radius와 Intensity를 제한합니다.
- shadow그림자 차단
shadow Cast Shadows는 대부분 끄고 필요한 경우에도 파티클 수와 수명을 짧게 둡니다.
- curve수명 곡선
curve Intensity를 수명 곡선에 묶어 생성 직후 밝고 빠르게 사라지게 만듭니다.
조명 반응은 예쁘게 빛나는 표현과 실제 라이트 비용을 구분해야 하므로, 발광과 Light Renderer를 별도 기준으로 봅니다.
발광해 보이는 파티클과 실제로 주변을 밝히는 Light Renderer는 비용과 결과가 다르므로 의도를 분리합니다.
- 셰이딩 모델
Shading Unlit은 가볍고 일정하며 Default Lit은 환경 조명과 노멀 영향을 받습니다.
- 그림자
Shadow Cast Shadows는 입체감을 주지만 작은 입자에는 비용 대비 효과가 낮을 수 있습니다.
- Light Renderer
Light 불꽃 중심부처럼 소수의 파티클만 반경과 밝기를 제한해 사용합니다.
- Emissive
Glow 주변 조명 없이도 밝아 보이지만 실제 그림자나 GI와는 별개로 확인합니다.
- 반경
Light Radius가 너무 크면 많은 픽셀과 오브젝트에 영향을 줍니다.
- 그림자
파티클 그림자가 필요한 화면인지 레퍼런스로 판단합니다.
- 성능
Stat GPU에서 Translucency와 Lights 항목을 함께 봅니다.
파티클과 조명의 상호작용은 데이터 입력, 이미터 책임, 렌더 비용, 재현 기준으로 점검합니다.