TextureArray.xml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <class name="TextureArray" inherits="TextureLayered" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
  3. <brief_description>
  4. Array of textures stored in a single primitive.
  5. </brief_description>
  6. <description>
  7. [TextureArray]s store an array of [Image]s in a single [Texture] primitive. Each layer of the texture array has its own mipmap chain. This makes it is a good alternative to texture atlases. See also [Texture3D].
  8. [TextureArray]s must be displayed using shaders. After importing your file as a [TextureArray] and setting the appropriate Horizontal and Vertical Slices, display it by setting it as a uniform to a shader, for example (2D):
  9. [codeblock]
  10. shader_type canvas_item;
  11. uniform sampler2DArray tex;
  12. uniform int index;
  13. void fragment() {
  14. COLOR = texture(tex, vec3(UV.x, UV.y, float(index)));
  15. }
  16. [/codeblock]
  17. Set the integer uniform "index" to show a particular part of the texture as defined by the Horizontal and Vertical Slices in the importer.
  18. [b]Note:[/b] When sampling an albedo texture from a texture array in 3D, the sRGB -&gt; linear conversion hint ([code]hint_albedo[/code]) should be used to prevent colors from looking washed out:
  19. [codeblock]
  20. shader_type spatial;
  21. uniform sampler2DArray tex : hint_albedo;
  22. uniform int index;
  23. void fragment() {
  24. ALBEDO = texture(tex, vec3(UV.x, UV.y, float(index)));
  25. }
  26. [/codeblock]
  27. [b]Note:[/b] [TextureArray]s can only be sampled in shaders in the GLES3 backend. In GLES2, their data can be accessed via scripting, but there is no way to render them in a hardware-accelerated manner.
  28. </description>
  29. <tutorials>
  30. </tutorials>
  31. <methods>
  32. <method name="create">
  33. <return type="void" />
  34. <argument index="0" name="width" type="int" />
  35. <argument index="1" name="height" type="int" />
  36. <argument index="2" name="depth" type="int" />
  37. <argument index="3" name="format" type="int" enum="Image.Format" />
  38. <argument index="4" name="flags" type="int" default="7" />
  39. <description>
  40. Creates the TextureArray with specified [code]width[/code], [code]height[/code], and [code]depth[/code]. See [enum Image.Format] for [code]format[/code] options. See [enum TextureLayered.Flags] enumerator for [code]flags[/code] options.
  41. </description>
  42. </method>
  43. </methods>
  44. <constants>
  45. </constants>
  46. </class>