본문 바로가기
programming | development/unity

Visual Effect Graph Attributes

by foooo828 2022. 2. 25.

Attributes 

파티클의 색상, 위치, Spawn 시스템이 생성한 파티클 수 등의 시스템의 요소에 연결된 데이터 조각

읽고 쓰기가 가능하며 필요할때만 속성을 저장한다.

 

쓰기(Write) : Block 사용

 

**  Update 컨텍스트에서 속성을 쓸때(write) 그  이후의 컨텍스트 (Update 나 Output )에서 속성을 읽을(read)경우에만 시뮬레이션 데이터에 속성이 저장된다.

Output 컨텍스트에서 attribute를 쓸 때는 속성을 저장하지 않고 렌더링하는 데만 사용한다.

 

읽기(Read) : Operator 나 Block 사용

  • Get Attribute 오퍼레이터 사용하여 데이터를 가져올 수 있다.

 

  • Set Attribute 블록에서 이전 속성 값에 따라 다른 Composition 모드(Add, Multuply, Blend)를 사용하여 데이터를 가져올 수 있다.

Insepector 에서 Composition 설정을 변경했을때 Mode 가 Write 에서 ReadWrite 로 바뀐것을 볼 수 있음 

** 저장되지 않은 시뮬레이션 데이터를 Attribute 로부터 읽을때 기본값인 상수를 반환한다.

현재는 Particle, ParticleStrip 시스템에서만 Get Attribute를 쓸 수 있으며 Spawn 시스템에서 사용할때는 Spawner Callbacks 을 써야한다.

 

Attribute Locations :

모든 시스템은 속성(Attribute)들을 고유한 데이터 컨테이너에 저장하며 그 속성은 현재 시뮬레이션 데이터 풀이나 시스템이 의존하는 다른 데이터 풀에서 읽어올 수 있다.

 

Current : 현재 시스템 데이터 컨테이너를 참조하여 값을 가져온다.

예) Particle System 의 Particle 데이터     

      ParticleStrip System 의 ParticleStrip 데이터

      Spawn Context 의 SpawnEvent 데이터

 

Source  : 값을 읽는 이전 시스템의 데이터 컨테이너를 참조. 데이터가 변경된 후 시스템의 첫번째 컨텍스트에서만 읽을 수 있다.

예) Initialize Particle 컨텍스트에서는 Spawn 컨텍스트, 또는 GPUEvent를 통한 다른 파티클 시스템

 

아래와 같이 Initialize Particle 컨텍스트에서 파티클의 색상을 빨간색으로 설정하고 Update Praticle 컨텍스트에서는 흰색으로 설정했을 경우,

Update Particle 컨텍스트에서 Set Color 블록의 색상을 Get Attribute 에서 Location Source로 가져온 값으로 설정했을 때 이전 컨텍스트(Initalize Particle)에서 설정한 빨간색이 파티클에 적용된 것을 볼 수 있다.

Current 로 했을 때는 현재 컨텍스트에서 설정한 흰색이 적용된 것을 볼 수 있다. 

Location : Source
Location  : Current

 

댓글