Texture instructions

Introduction

Todo

write me

Automatic texture load: texauto

Todo

write me

texauto [deriv] live/all <texargs>

  Does a texture fetch. Inputs are: x, y, z, array index, dref [skip all
  that your current sampler setup doesn't use]. x, y, z, dref are floats,
  array index is integer. If running in FP or the deriv flag is on,
  derivatives are computed based on coordinates in all threads of current
  quad. Otherwise, derivatives are assumed 0. For FP, if the live flag
  is on, the tex instruction is only run for fragments that are going to
  be actually written to the render target, ie. for ones that are inside
  the rendered primitive and haven't been discarded yet. all executes
  the tex even for non-visible fragments, which is needed if they're going
  to be used for further derivatives, explicit or implicit.

Raw texel fetch: texfetch

Todo

write me

texfetch live/all <texargs>

  A single-texel fetch. The inputs are x, y, z, index, lod, and are all
  integer.

Texture load with LOD bias: texbias

Todo

write me

texbias [deriv] live/all <texargs>

  Same as texauto, except takes an additional [last] float input specifying
  the LOD bias to add. Note that bias needs to be the same for all threads
  in the current quad executing the texbias insn.

Texture load with manual LOD: texlod

Todo

write me

Does a texture fetch with given coordinates and LOD. Inputs are like
texbias, except you have explicit LOD instead of the bias. Just like
in texbias, the LOD should be the same for all threads involved.

Texture size query: texsize

Todo

write me

texsize live/all <texargs>

  Gives you (width, height, depth, mipmap level count) in output, takes
  integer LOD parameter as its only input.