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.

입자 셰이더

입자 셰이더는 객체가 그려지기 전에 실행되는 특별한 유형의 셰이더입니다. 색상, 위치 및 회전과 같은 재료 속성을 계산하는 데 사용됩니다. 2D인지 3D인지에 따라 CanvasItem 또는 Spatial의 일반 재질을 사용하여 그릴 수 있습니다.

입자 셰이더는 개체 자체를 그리는 데 사용되지 않기 때문에 고유합니다. 이는 입자 특성을 계산하는 데 사용되며 CanvasItem 또는 Spatial 셰이더에서 사용됩니다. 여기에는 start()``process()``의 두 가지 프로세서 기능이 포함되어 있습니다.

다른 셰이더 유형과 달리 파티클 셰이더는 이전 프레임에 출력된 데이터를 유지합니다. 따라서 파티클 셰이더는 여러 프레임에 걸쳐 발생하는 복잡한 효과에 사용될 수 있습니다.

참고

입자 셰이더는 GPU 기반 입자 노드(GPUParticles2DGPUParticles3D)에서만 사용할 수 있습니다.

CPU 기반 파티클 노드(CPUParticles2DCPUParticles3D)는 GPU에서 *렌더링*되지만(즉, 사용자 정의 CanvasItem 또는 Spatial 셰이더를 사용할 수 있음을 의미) 모션은 CPU에서 *시뮬레이션*됩니다.

렌더러 모드

렌더링 모드

설명

데이터 유지

다시 시작할 때 이전 데이터를 지우지 마십시오.

disable_force

어트랙터 포스를 비활성화합니다.

disable_velocity

VELOCITY 값을 무시합니다.

collision_use_scale

콜리전 준비하기

Built-In(내장)

``in``로 표시된 값은 읽기 전용입니다. ``out``로 표시된 값은 선택적으로 쓸 수 있으며 반드시 합리적인 값을 포함하지는 않습니다. ``inout``로 표시된 값은 적절한 기본값을 제공하며 선택적으로 쓸 수 있습니다. 샘플러는 기록할 수 없으므로 표시되지 않습니다.

벡터 내장 타입

사용자 정의 기능을 포함하여 전역 내장 기능을 어디에서나 사용할 수 있습니다.

내장

설명

부동 소수점 TIME

엔진이 시작된 이후의 전역 시간(초)입니다. 3,600``초마다 반복됩니다(:ref:`rollover<class_ProjectSettings_property_rendering/limits/time/time_rollover_secs>` 설정으로 변경 가능). :ref:`time_scale<class_Engine_property_time_scale>`의 영향을 받지만 일시 중지의 영향을 받지는 않습니다. 시간 척도의 영향을 받지 않는 ``TIME 변수가 필요한 경우 고유한 :ref:`global shader uniform<doc_shading_language_global_uniforms>`를 추가하고 각 프레임을 업데이트하세요.

부동 소수점 PI

PI 상수(3.141592). 원의 지름과 반 바퀴의 라디안 수에 대한 원주 비율입니다.

부동 TAU

TAU 상수(6.283185). PI * 2 및 1회전의 라디안 수와 동일합니다.

부동 E

E 상수(2.718281). 자연로그의 밑이 되는 오일러 수.

벡터 내장 타입

이러한 속성은 start()process() 함수 모두에서 액세스할 수 있습니다.

함수

설명

부동 소수점 수명

입자 수명.

부동 소수점 DELTA

델타 처리 시간.

단위 NUMBER

방출 시작 이후 고유 번호입니다.

단위 INDEX

입자 지수(총 입자 기준).

mat4 EMISSION_TRANSFORM

이미터 변환(비로컬 시스템에 사용됨)

단위 RANDOM_SEED

무작위의 기본으로 사용되는 무작위 시드입니다.

inout bool 활성

true 입자가 활성화되면 ``false``로 설정할 수 있습니다.

inout vec4 색상

파티클 색상은 메시의 정점 기능에 기록되고 액세스될 수 있습니다.

inout vec3 속도

입자 속도를 수정할 수 있습니다.

inout mat4 변환

입자 변환.

inout vec4 사용자 정의

사용자 정의 입자 데이터. 메시의 셰이더에서 ``INSTANCE_CUSTOM``로 액세스할 수 있습니다.

inout float 질량

어트랙터와 함께 사용하도록 의도된 입자 질량입니다. 기본적으로 ``1.0``입니다.

vec4 **USERDATAX**에서

보충 사용자 정의 데이터를 입자 프로세스 셰이더에 통합할 수 있는 벡터입니다. USERDATAX``는 숫자로 식별되는 6개의 내장 기능이며, ``X``는 1에서 6 사이의 숫자일 있습니다(예: ``USERDATA3).

단위 FLAG_EMIT_POSITION

새 입자의 변환에 위치를 할당하는 emit_subparticle() 함수의 마지막 인수에 대한 플래그입니다.

단위 FLAG_EMIT_ROT_SCALE

새 입자의 변환에 회전 및 크기 조정을 할당하는 emit_subparticle() 함수의 마지막 인수에 대한 플래그입니다.

단위 FLAG_EMIT_VELOCITY

새 입자에 속도를 할당하는 emit_subparticle() 함수의 마지막 인수에 대한 플래그입니다.

단위 FLAG_EMIT_COLOR

새 입자에 색상을 할당하는 emit_subparticle() 함수의 마지막 인수에 대한 플래그입니다.

단위 FLAG_EMIT_CUSTOM

사용자 정의 데이터 벡터를 새 입자에 할당하기 위한 emit_subparticle() 함수의 마지막 인수에 대한 플래그입니다.

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

입자가 다시 시작되거나 사용자 정의 위치 없이 방출되는 경우 true``입니다(즉, 입자는 ``FLAG_EMIT_POSITION 플래그 없이 ``emit_subparticle()``에 의해 생성되었습니다).

부울 RESTART_ROT_SCALE

입자가 다시 시작되거나 사용자 정의 회전 또는 크기 조절 없이 방출되는 경우 true``입니다(즉, 입자는 ``FLAG_EMIT_ROT_SCALE 플래그 없이 ``emit_subparticle()``에 의해 생성되었습니다).

부울 RESTART_VELOCITY

입자가 다시 시작되거나 사용자 정의 속도 없이 방출되는 경우 true``입니다(즉, 입자는 ``FLAG_EMIT_VELOCITY 플래그 없이 ``emit_subparticle()``에 의해 생성되었습니다).

부울 RESTART_COLOR

입자가 다시 시작되거나 사용자 정의 색상 없이 방출되는 경우 true``입니다(즉, 입자는 ``FLAG_EMIT_COLOR 플래그 없이 ``emit_subparticle()``에 의해 생성되었습니다).

bool **RESTART_CUSTOM**에서

입자가 다시 시작되거나 사용자 정의 속성 없이 방출되는 경우 true``입니다(즉, 입자는 ``FLAG_EMIT_CUSTOM 플래그 없이 ``emit_subparticle()``에 의해 생성되었습니다).

벡터 내장 타입

내장

설명

부울 재시작

현재 프로세스 프레임이 입자의 첫 번째 프레임인 경우 ``true``입니다.

bool에서 충돌

입자가 입자 충돌기와 충돌했을 때 true.

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 플래그)

하위 방출체에서 입자를 방출합니다.