blob: f7223162bc4232715674742a6d72a0dfcd247cc9 [file] [log] [blame]
Corbin Simpsona524aab2009-12-20 19:41:50 -08001.. _sampler:
2
Corbin Simpsonc686e172009-12-20 15:00:40 -08003Sampler
4=======
5
6Texture units have many options for selecting texels from loaded textures;
7this state controls an individual texture unit's texel-sampling settings.
8
Corbin Simpsonc80f2b02009-12-20 16:40:39 -08009Texture coordinates are always treated as four-dimensional, and referred to
10with the traditional (S, T, R, Q) notation.
11
Corbin Simpsonc686e172009-12-20 15:00:40 -080012Members
13-------
14
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080015wrap_s
Brian Paulc3b6adc2010-03-05 09:53:37 -070016 How to wrap the S coordinate. One of PIPE_TEX_WRAP_*.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080017wrap_t
Brian Paulc3b6adc2010-03-05 09:53:37 -070018 How to wrap the T coordinate. One of PIPE_TEX_WRAP_*.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080019wrap_r
Brian Paulc3b6adc2010-03-05 09:53:37 -070020 How to wrap the R coordinate. One of PIPE_TEX_WRAP_*.
21
22The wrap modes are:
23
24* ``PIPE_TEX_WRAP_REPEAT``: Standard coord repeat/wrap-around mode.
25* ``PIPE_TEX_WRAP_CLAMP_TO_EDGE``: Clamp coord to edge of texture, the border
26 color is never sampled.
27* ``PIPE_TEX_WRAP_CLAMP_TO_BORDER``: Clamp coord to border of texture, the
28 border color is sampled when coords go outside the range [0,1].
29* ``PIPE_TEX_WRAP_CLAMP``: The coord is clamped to the range [0,1] before
30 scaling to the texture size. This corresponds to the legacy OpenGL GL_CLAMP
Erik Faye-Lund6ec9a7e2020-09-28 17:56:22 +020031 texture wrap mode. Historically, this mode hasn't acted consistently across
Brian Paulc3b6adc2010-03-05 09:53:37 -070032 all graphics hardware. It sometimes acts like CLAMP_TO_EDGE or
Erik Faye-Lund98909272020-09-25 14:54:56 +020033 CLAMP_TO_BORDER. The behavior may also vary depending on linear vs.
Brian Paulc3b6adc2010-03-05 09:53:37 -070034 nearest sampling mode.
35* ``PIPE_TEX_WRAP_MIRROR_REPEAT``: If the integer part of the coordinate
36 is odd, the coord becomes (1 - coord). Then, normal texture REPEAT is
37 applied to the coord.
38* ``PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE``: First, the absolute value of the
39 coordinate is computed. Then, regular CLAMP_TO_EDGE is applied to the coord.
40* ``PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER``: First, the absolute value of the
41 coordinate is computed. Then, regular CLAMP_TO_BORDER is applied to the
42 coord.
43* ``PIPE_TEX_WRAP_MIRROR_CLAMP``: First, the absolute value of the coord is
44 computed. Then, regular CLAMP is applied to the coord.
45
46
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080047min_img_filter
Brian Paulc3b6adc2010-03-05 09:53:37 -070048 The image filter to use when minifying texels. One of PIPE_TEX_FILTER_*.
49mag_img_filter
50 The image filter to use when magnifying texels. One of PIPE_TEX_FILTER_*.
51
52The texture image filter modes are:
53
54* ``PIPE_TEX_FILTER_NEAREST``: One texel is fetched from the texture image
55 at the texture coordinate.
56* ``PIPE_TEX_FILTER_LINEAR``: Two, four or eight texels (depending on the
57 texture dimensions; 1D/2D/3D) are fetched from the texture image and
58 linearly weighted and blended together.
59
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080060min_mip_filter
61 The filter to use when minifying mipmapped textures. One of
Brian Paulc3b6adc2010-03-05 09:53:37 -070062 PIPE_TEX_MIPFILTER_*.
63
64The texture mip filter modes are:
65
66* ``PIPE_TEX_MIPFILTER_NEAREST``: A single mipmap level/image is selected
67 according to the texture LOD (lambda) value.
68* ``PIPE_TEX_MIPFILTER_LINEAR``: The two mipmap levels/images above/below
69 the texture LOD value are sampled from. The results of sampling from
70 those two images are blended together with linear interpolation.
71* ``PIPE_TEX_MIPFILTER_NONE``: Mipmap filtering is disabled. All texels
72 are taken from the level 0 image.
73
74
Roland Scheideggerc6c9d3b2010-01-21 20:22:24 +010075compare_mode
Brian Paulc3b6adc2010-03-05 09:53:37 -070076 If set to PIPE_TEX_COMPARE_R_TO_TEXTURE, the result of texture sampling
77 is not a color but a true/false value which is the result of comparing the
78 sampled texture value (typically a Z value from a depth texture) to the
79 texture coordinate's R component.
Roland Scheideggerc6c9d3b2010-01-21 20:22:24 +010080 If set to PIPE_TEX_COMPARE_NONE, no comparison calculation is performed.
81compare_func
Brian Paulc3b6adc2010-03-05 09:53:37 -070082 The inequality operator used when compare_mode=1. One of PIPE_FUNC_x.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080083normalized_coords
Brian Paulc3b6adc2010-03-05 09:53:37 -070084 If set, the incoming texture coordinates (nominally in the range [0,1])
85 will be scaled by the texture width, height, depth to compute texel
86 addresses. Otherwise, the texture coords are used as-is (they are not
87 scaled by the texture dimensions).
Brian Paul76e87782010-03-05 13:30:24 -070088 When normalized_coords=0, only a subset of the texture wrap modes are
89 allowed: PIPE_TEX_WRAP_CLAMP, PIPE_TEX_WRAP_CLAMP_TO_EDGE and
90 PIPE_TEX_WRAP_CLAMP_TO_BORDER.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080091lod_bias
Brian Paulc3b6adc2010-03-05 09:53:37 -070092 Bias factor which is added to the computed level of detail.
93 The normal level of detail is computed from the partial derivatives of
94 the texture coordinates and/or the fragment shader TEX/TXB/TXL
95 instruction.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080096min_lod
Brian Paulc3b6adc2010-03-05 09:53:37 -070097 Minimum level of detail, used to clamp LOD after bias. The LOD values
98 correspond to mipmap levels where LOD=0 is the level 0 mipmap image.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -080099max_lod
Brian Paulc3b6adc2010-03-05 09:53:37 -0700100 Maximum level of detail, used to clamp LOD after bias.
Corbin Simpsonc80f2b02009-12-20 16:40:39 -0800101border_color
Dave Airlie9f61e432011-09-27 10:08:34 +0100102 Color union used for texel coordinates that are outside the [0,width-1],
103 [0, height-1] or [0, depth-1] ranges. Interpreted according to sampler
Christoph Bumiller729abfd2013-04-12 13:42:01 +0200104 view format, unless the driver reports
105 PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK, in which case special care has to be
106 taken (see description of the cap).
Corbin Simpsonc80f2b02009-12-20 16:40:39 -0800107max_anisotropy
Erik Faye-Lunda22cedf2020-09-30 15:20:15 +0200108 Maximum anisotropy ratio to use when sampling from textures. For example,
109 if max_anisotropy=4, a region of up to 1 by 4 texels will be sampled.
Brian Paulc3b6adc2010-03-05 09:53:37 -0700110 Set to zero to disable anisotropic filtering. Any other setting enables
111 anisotropic filtering, however it's not unexpected some drivers only will
112 change their filtering with a setting of 2 and higher.
Marek Olšáka5f0a112011-05-02 02:37:46 +0200113seamless_cube_map
114 If set, the bilinear filter of a cube map may take samples from adjacent
115 cube map faces when sampled near a texture border to produce a seamless
Christoph Bumiller729abfd2013-04-12 13:42:01 +0200116 look.