Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
입자 셰이더
입자 셰이더는 객체가 그려지기 전에 실행되는 특별한 유형의 셰이더입니다. 색상, 위치 및 회전과 같은 재료 속성을 계산하는 데 사용됩니다. 2D인지 3D인지에 따라 CanvasItem 또는 Spatial의 일반 재질을 사용하여 그릴 수 있습니다.
입자 셰이더는 개체 자체를 그리는 데 사용되지 않기 때문에 고유합니다. 이는 입자 특성을 계산하는 데 사용되며 CanvasItem 또는 Spatial 셰이더에서 사용됩니다. 여기에는 start() 및 ``process()``의 두 가지 프로세서 기능이 포함되어 있습니다.
다른 셰이더 유형과 달리 파티클 셰이더는 이전 프레임에 출력된 데이터를 유지합니다. 따라서 파티클 셰이더는 여러 프레임에 걸쳐 발생하는 복잡한 효과에 사용될 수 있습니다.
참고
입자 셰이더는 GPU 기반 입자 노드(GPUParticles2D 및 GPUParticles3D)에서만 사용할 수 있습니다.
CPU 기반 파티클 노드(CPUParticles2D 및 CPUParticles3D)는 GPU에서 *렌더링*되지만(즉, 사용자 정의 CanvasItem 또는 Spatial 셰이더를 사용할 수 있음을 의미) 모션은 CPU에서 *시뮬레이션*됩니다.
렌더러 모드
렌더링 모드 |
설명 |
|---|---|
데이터 유지 |
다시 시작할 때 이전 데이터를 지우지 마십시오. |
disable_force |
어트랙터 포스를 비활성화합니다. |
disable_velocity |
|
collision_use_scale |
콜리전 준비하기 |
Built-In(내장)
``in``로 표시된 값은 읽기 전용입니다. ``out``로 표시된 값은 선택적으로 쓸 수 있으며 반드시 합리적인 값을 포함하지는 않습니다. ``inout``로 표시된 값은 적절한 기본값을 제공하며 선택적으로 쓸 수 있습니다. 샘플러는 기록할 수 없으므로 표시되지 않습니다.
벡터 내장 타입
사용자 정의 기능을 포함하여 전역 내장 기능을 어디에서나 사용할 수 있습니다.
내장 |
설명 |
|---|---|
부동 소수점 TIME |
엔진이 시작된 이후의 전역 시간(초)입니다. |
부동 소수점 PI |
|
부동 TAU |
|
부동 E |
|
벡터 내장 타입
이러한 속성은 start() 및 process() 함수 모두에서 액세스할 수 있습니다.
함수 |
설명 |
|---|---|
부동 소수점 수명 |
입자 수명. |
부동 소수점 DELTA |
델타 처리 시간. |
단위 NUMBER |
방출 시작 이후 고유 번호입니다. |
단위 INDEX |
입자 지수(총 입자 기준). |
mat4 EMISSION_TRANSFORM |
이미터 변환(비로컬 시스템에 사용됨) |
단위 RANDOM_SEED |
무작위의 기본으로 사용되는 무작위 시드입니다. |
inout bool 활성 |
|
inout vec4 색상 |
파티클 색상은 메시의 정점 기능에 기록되고 액세스될 수 있습니다. |
inout vec3 속도 |
입자 속도를 수정할 수 있습니다. |
inout mat4 변환 |
입자 변환. |
inout vec4 사용자 정의 |
사용자 정의 입자 데이터. 메시의 셰이더에서 ``INSTANCE_CUSTOM``로 액세스할 수 있습니다. |
inout float 질량 |
어트랙터와 함께 사용하도록 의도된 입자 질량입니다. 기본적으로 ``1.0``입니다. |
vec4 **USERDATAX**에서 |
보충 사용자 정의 데이터를 입자 프로세스 셰이더에 통합할 수 있는 벡터입니다. |
단위 FLAG_EMIT_POSITION |
새 입자의 변환에 위치를 할당하는 |
단위 FLAG_EMIT_ROT_SCALE |
새 입자의 변환에 회전 및 크기 조정을 할당하는 |
단위 FLAG_EMIT_VELOCITY |
새 입자에 속도를 할당하는 |
단위 FLAG_EMIT_COLOR |
새 입자에 색상을 할당하는 |
단위 FLAG_EMIT_CUSTOM |
사용자 정의 데이터 벡터를 새 입자에 할당하기 위한 |
vec3에서 EMITTER_VELOCITY |
Particles2D) 노드의 속도. |
부동 INTERPOLATE_TO_END |
입자 노드의 interp_to_end) 속성 값입니다. |
단위 AMOUNT_RATIO |
입자 노드의 amount_ratio) 속성 값입니다. |
참고
StandardMaterial3D에서 COLOR 변수를 사용하려면 vertex_color_use_as_albedo``를 ``true``로 설정하세요. ShaderMaterial에서 ``COLOR 변수를 사용하여 액세스합니다.
벡터 내장 타입
내장 |
설명 |
|---|---|
부울 RESTART_POSITION |
입자가 다시 시작되거나 사용자 정의 위치 없이 방출되는 경우 |
부울 RESTART_ROT_SCALE |
입자가 다시 시작되거나 사용자 정의 회전 또는 크기 조절 없이 방출되는 경우 |
부울 RESTART_VELOCITY |
입자가 다시 시작되거나 사용자 정의 속도 없이 방출되는 경우 |
부울 RESTART_COLOR |
입자가 다시 시작되거나 사용자 정의 색상 없이 방출되는 경우 |
bool **RESTART_CUSTOM**에서 |
입자가 다시 시작되거나 사용자 정의 속성 없이 방출되는 경우 |
벡터 내장 타입
내장 |
설명 |
|---|---|
부울 재시작 |
현재 프로세스 프레임이 입자의 첫 번째 프레임인 경우 ``true``입니다. |
bool에서 충돌 |
입자가 입자 충돌기와 충돌했을 때 |
vec3에서 충돌_정상 |
지난 충돌의 노멀. 충돌이 감지되지 않으면 ``(0.0, 0.0, 0.0)``와 같습니다. |
부동 COLLISION_DEPTH |
마지막 충돌의 법선 길이입니다. 충돌이 감지되지 않으면 ``0.0``와 같습니다. |
vec3에서 ATTRACTOR_FORCE |
현재 해당 입자에 작용하는 어트랙터의 결합된 힘입니다. |
프로세싱(Processing)
emit_subparticle()``는 현재 파티클 셰이더에서 지원하는 유일한 사용자 정의 함수입니다. 이를 통해 사용자는 하위 방사체에서 지정된 매개변수를 사용하여 새 입자를 추가할 수 있습니다. 새로 생성된 입자는 ``flags 매개변수와 일치하는 속성만 사용합니다. 예를 들어 다음 코드는 지정된 위치, 속도 및 색상을 사용하지만 회전, 크기 및 사용자 정의 값은 지정되지 않은 입자를 방출합니다.
mat4 custom_transform = mat4(1.0);
custom_transform[3].xyz = vec3(10.5, 0.0, 4.0);
emit_subparticle(custom_transform, vec3(1.0, 0.5, 1.0), vec4(1.0, 0.0, 0.0, 1.0), vec4(1.0), FLAG_EMIT_POSITION | FLAG_EMIT_VELOCITY | FLAG_EMIT_COLOR);
함수 |
설명 |
|---|---|
bool emit_subparticle (mat4 xform, vec3 속도, vec4 색상, vec4 사용자 정의, uint 플래그) |
하위 방출체에서 입자를 방출합니다. |