Rasagar/Library/PackageCache/com.unity.visualeffectgraph/Documentation~/Block-SetAttributeFromMap.md
2024-08-26 23:07:20 +03:00

9.8 KiB

Set Attribute from Map

Menu Path : Attribute > Set <Attribute> From Map

The Set Attribute from Map Block is a generic Block that calculates values based on data it samples from Textures and then composes those values into a given attribute.

To achieve different results, this Block can use various sampling modes. The sampling modes are:

  • Index, IndexRelative, and Sequential sample modes use particle indices to sample the pixels of the texture. These modes can sample Point Caches or Attribute Maps in various ways.
  • Sample2DLOD and Sample3DLOD sample modes use 2D and 3D coordinates and a LOD factor to sample the texture. You can use these modes for projection of various values such as color or depth.
  • Random and RandomUniformPerParticle sample modes allow you to fetch random values from a pool of values stored in a texture, such as Point Caches or Attribute Maps.

After this Block samples a value from the Texture, it can also apply a scale and a bias to it. For example, if a texture stores unsigned-normalized values where 0 is middle gray, you can apply a bias of -0.5 to reinterpret the value as zero.

Block compatibility

This Block is compatible with the following Contexts:

Block settings

Setting Type Description
Attribute Attribute (Inspector) Specifies the attribute to write to.
Composition Enum (Inspector) Specifies how this Block composes the attribute. The options are:
Set: Overwrites the position attribute with the new value.
Add: Adds the new value to the position attribute value.
Multiply: Multiplies the position attribute value by the new value.
Blend: Interpolates between the position attribute value and the new value. You can specify the blend factor between 0 and 1.
Sample Mode Enum Specifies how the Block samples the Texture. The options are:
IndexRelative: Uses the value read from a float port to determine the pixel index. The input value is expected in the 0..1 range and will be multiplied by the number of pixels of the texture to determine the index.
Index: Uses the value read from an integer port as the pixel index.
Sequential: Uses the particle ID attribute as the pixel index.
Sample2DLOD: uses the coordinate provided from a vector2 input port and the LOD from another input port to sample the 2D texture.
Sample3DLOD: uses the coordinate provided from a vector3 input port and the LOD from another input port to sample the 3D texture.
Random: uses a random 2D/3D Position to sample the texture
RandomUniformPerParticle: uses a unique (per particle) 2D/3D position to sample the texture
Channels Enum Specifies which channels of the attribute this Block affects. This Block does not affect channels you do not include in this property.
This setting only appears if you set the Attribute to one with channels.
Use Point Count Bool When enabled, you can specify the number of points contained in the attribute map. This is useful when the number of points actually contained in the attribute map is smaller than the texture size. If disabled, the block considers that the number of points is equal to the size of the attribute map texture.
This setting does not if you set Sample Mode to Sample2DLOD or Sample3DLOD.

Block properties

Input Type Description
Attribute Map Texture2D/Texture3D The texture this Block samples from.
RelativePos float The index to sample from relative to number of pixels in the texture. This property expects values in the range of 0 to 1 which the Block remaps to the range of 0 to N where N is the total number of pixels in the texture (width * height).
This property only appears if you set Sample Mode to Index Relative.
Index uint The index to sample from. This property expects values in the range of 0 to N where N is the total number of pixels in the texture (width * height).
This property only appears if you set Sample Mode to Index.
Sample Position Vector2/Vector3 The coordinate in the 2D or 3D Texture to sample from.
This property only appears if you set Sample Mode to Sample2DLOD or Sample3DLOD.
LOD float The LOD of the 2D or 3D Texture to sample from.
This property only appears if you set Sample Mode to Sample2DLOD or Sample3DLOD.
Seed uint The seed this Block uses to calculate random values.
This property only appears if you set Sample Mode to RandomUniformPerParticle.
Blend float The blend percentage between the current of the attribute value and the newly calculated value.
This property only appears if you set Composition or Alpha Composition to Blend.