15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci SGIS_detail_texture 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_SGIS_detail_texture 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciVersion 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci $Date: 1995/07/09 06:48:46 $ $Revision: 1.31 $ 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ciNumber 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci 21 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ciDependencies 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ci EXT_texture is required 205bd8deadSopenharmony_ci EXT_subtexture affects the definition of this extension 215bd8deadSopenharmony_ci EXT_copy_texture affects the definition of this extension 225bd8deadSopenharmony_ci EXT_texture_object affects the definition of this extension 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ciOverview 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci This extension introduces texture magnification filters that blend 275bd8deadSopenharmony_ci between the level 0 image and a separately defined "detail" image. 285bd8deadSopenharmony_ci The detail image represents the characteristics of the high frequency 295bd8deadSopenharmony_ci subband image above the band-limited level 0 image. The detail image is 305bd8deadSopenharmony_ci typically a rectangular portion of the subband image which is modified 315bd8deadSopenharmony_ci so that it can be repeated without discontinuities along its edges. 325bd8deadSopenharmony_ci Detail blending can be enabled for all color channels, for the alpha 335bd8deadSopenharmony_ci channel only, or for the red, green, and blue channels only. It is 345bd8deadSopenharmony_ci available only for 2D textures. 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci WARNING - Silicon Graphics has filed for patent protection for some 375bd8deadSopenharmony_ci of the techniques described in this extension document. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciIssues 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci * Should detail textures be supported in 1D? 3D? (Currently 425bd8deadSopenharmony_ci written to support 2D only) 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci * Is there any need to support detail textures with NEAREST 455bd8deadSopenharmony_ci or FILTER4 filtering? (No) 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci * How does detail texture interact with a texture whose 485bd8deadSopenharmony_ci minimum LOD image is not layer zero? (Handle this in the LOD 495bd8deadSopenharmony_ci extension.) 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci * Should six detail filters be defined, so that the MODE is part 525bd8deadSopenharmony_ci of the filter name? (LINEAR_ADD_DETAIL_SGIS, 535bd8deadSopenharmony_ci LINEAR_ADD_DETAIL_ALPHA_SGIS, ...) (No) 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci * I have scaled and biased the detail texture value to the range [-1,1] 565bd8deadSopenharmony_ci in this specification. I believe that Iris GL scaled and biased to 575bd8deadSopenharmony_ci [-0.5,0.5]. The [-1,1] range seems clearer to me, if it allows F() 585bd8deadSopenharmony_ci to be limited to [0,1]. Is this acceptable? 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci * Should detail texture objects and 2D texture objects be separate 615bd8deadSopenharmony_ci sets, or should it be possible to use the same texture object both 625bd8deadSopenharmony_ci as a detail texture and as a 2D texture? (Keep them separate) 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ciNew Procedures and Functions 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci void DetailTexFuncSGIS(enum target, 675bd8deadSopenharmony_ci sizei n, 685bd8deadSopenharmony_ci const float* points); 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci void GetDetailTexFuncSGIS(enum target, 715bd8deadSopenharmony_ci float* points); 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ciNew Tokens 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci Accepted by the <target> parameters of GetTexImage, 765bd8deadSopenharmony_ci GetTexLevelParameterfv, GetTexLevelParameteriv, GetTexParameterfv, 775bd8deadSopenharmony_ci GetTexParameteriv, TexImage2D, TexParameterf, TexParameterfv, 785bd8deadSopenharmony_ci TexParameteri, and TexParameteriv. If the corresponding extensions are 795bd8deadSopenharmony_ci supported, also accepted by the <target> parameters of TexSubImage2DEXT, 805bd8deadSopenharmony_ci CopyTexImage2DEXT, CopyTexSubImage2DEXT, and BindTextureEXT: 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci DETAIL_TEXTURE_2D_SGIS 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci Accepted by the <pname> parameters of GetBooleanv, GetIntegerv, 855bd8deadSopenharmony_ci GetFloatv, and GetDoublev: 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ci DETAIL_TEXTURE_2D_BINDING_SGIS 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci Accepted by the <param> parameter of TexParameteri and TexParameterf, 905bd8deadSopenharmony_ci and by the <params> parameter of TexParameteriv and TexParameterfv, 915bd8deadSopenharmony_ci when their <pname> parameter is TEXTURE_MAG_FILTER: 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ci LINEAR_DETAIL_SGIS 945bd8deadSopenharmony_ci LINEAR_DETAIL_ALPHA_SGIS 955bd8deadSopenharmony_ci LINEAR_DETAIL_COLOR_SGIS 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ci Accepted by the <pname> parameter of TexParameteri, TexParameterf, 985bd8deadSopenharmony_ci TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv: 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci DETAIL_TEXTURE_LEVEL_SGIS 1015bd8deadSopenharmony_ci DETAIL_TEXTURE_MODE_SGIS 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetTexParameteriv and 1045bd8deadSopenharmony_ci GetTexParameterfv: 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ci DETAIL_TEXTURE_FUNC_POINTS_SGIS 1075bd8deadSopenharmony_ci 1085bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci None 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization) 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ci GL Specification Table 3.7 is updated as follows: 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci Name Type Legal Values 1175bd8deadSopenharmony_ci ---- ---- ------------ 1185bd8deadSopenharmony_ci TEXTURE_WRAP_S integer CLAMP, REPEAT 1195bd8deadSopenharmony_ci TEXTURE_WRAP_T integer CLAMP, REPEAT 1205bd8deadSopenharmony_ci TEXTURE_WRAP_R_EXT integer CLAMP, REPEAT 1215bd8deadSopenharmony_ci TEXTURE_MIN_FILTER integer NEAREST, LINEAR, 1225bd8deadSopenharmony_ci NEAREST_MIPMAP_NEAREST, 1235bd8deadSopenharmony_ci NEAREST_MIPMAP_LINEAR, 1245bd8deadSopenharmony_ci LINEAR_MIPMAP_NEAREST, 1255bd8deadSopenharmony_ci LINEAR_MIPMAP_LINEAR, 1265bd8deadSopenharmony_ci FILTER4_SGIS 1275bd8deadSopenharmony_ci TEXTURE_MAG_FILTER integer NEAREST, LINEAR, 1285bd8deadSopenharmony_ci FILTER4_SGIS, 1295bd8deadSopenharmony_ci LINEAR_DETAIL_SGIS, 1305bd8deadSopenharmony_ci LINEAR_DETAIL_ALPHA_SGIS, 1315bd8deadSopenharmony_ci LINEAR_DETAIL_COLOR_SGIS 1325bd8deadSopenharmony_ci TEXTURE_BORDER_COLOR 4 floats any 4 values in [0,1] 1335bd8deadSopenharmony_ci DETAIL_TEXTURE_LEVEL_SGIS integer any non-positive integer 1345bd8deadSopenharmony_ci DETAIL_TEXTURE_MODE_SGIS integer ADD, MODULATE 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci Table 3.7: Texture parameters and their values. 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci 3.8.2.1 Texture magnification with detail 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci Three additional texture magnification filters are defined for texture 1415bd8deadSopenharmony_ci magnification. These values, which are assigned to TEXTURE_MAG_FILTER, 1425bd8deadSopenharmony_ci are LINEAR_DETAIL_SGIS, LINEAR_DETAIL_ALPHA_SGIS, and 1435bd8deadSopenharmony_ci LINEAR_DETAIL_COLOR_SGIS. All three filters sample the level zero 1445bd8deadSopenharmony_ci texture array exactly as it would be sampled with filter mode LINEAR. 1455bd8deadSopenharmony_ci All three also sample the level zero texture array of a second 1465bd8deadSopenharmony_ci texture, known as the detail texture, when three conditions are met. 1475bd8deadSopenharmony_ci The detail texture corresponding to texture TEXTURE_2D is 1485bd8deadSopenharmony_ci DETAIL_TEXTURE_2D_SGIS. The conditions are: 1495bd8deadSopenharmony_ci 1505bd8deadSopenharmony_ci 1. The active texture must be TEXTURE_2D. 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci 2. The internal formats of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS 1535bd8deadSopenharmony_ci must have been specified identically. 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci 3. The level 0 array of DETAIL_TEXTURE_2D_SGIS must have nonzero width 1565bd8deadSopenharmony_ci and height. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci If these conditions are not met, it is as though the magnification 1595bd8deadSopenharmony_ci texture filter was LINEAR. (Although querying the magnification filter 1605bd8deadSopenharmony_ci value will return the value as specified.) If they are met, the level 1615bd8deadSopenharmony_ci zero array of the detail texture is also linearly sampled, using the 1625bd8deadSopenharmony_ci following arithmetic: 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci n = log base 2 of the width of the level zero array of TEXTURE_2D 1655bd8deadSopenharmony_ci m = log base 2 of the height of the level zero array of TEXTURE_2D 1665bd8deadSopenharmony_ci N = log base 2 of the width of DETAIL_TEXTURE_2D_SGIS 1675bd8deadSopenharmony_ci M = log base 2 of the height of DETAIL_TEXTURE_2D_SGIS 1685bd8deadSopenharmony_ci L = DETAIL_TEXTURE_LEVEL_SGIS value of TEXTURE_2D 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci u = s * 2**(n-L) 1715bd8deadSopenharmony_ci v = t * 2**(m-L) 1725bd8deadSopenharmony_ci 1735bd8deadSopenharmony_ci i0 = floor(u - 1/2) mod 2**N 1745bd8deadSopenharmony_ci j0 = floor(v - 1/2) mod 2**M 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci i1 = (i0 + 1) mod 2**N 1775bd8deadSopenharmony_ci j1 = (j0 + 1) mod 2**M 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci A = frac(u - 1/2) 1805bd8deadSopenharmony_ci B = frac(v - 1/2) 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci Tdetail = (1-A) * (1-B) * detail[i0,j0] + 1835bd8deadSopenharmony_ci A * (1-B) * detail[i1,j0] + 1845bd8deadSopenharmony_ci (1-A) * B * detail[i0,j1] + 1855bd8deadSopenharmony_ci A * B * detail[i1,j1] 1865bd8deadSopenharmony_ci 1875bd8deadSopenharmony_ci Note that magnification corresponds to negative values of level-of-detail 1885bd8deadSopenharmony_ci and minification corresponds to positive values. Hence L, the value of the 1895bd8deadSopenharmony_ci DETAIL_TEXTURE_LEVEL_SGIS parameter of TEXTURE_2D, must be negative. The 1905bd8deadSopenharmony_ci absolute value of L can be thought of as the number of levels that 1915bd8deadSopenharmony_ci separate the level 0 image of TEXTURE_2D and the image of 1925bd8deadSopenharmony_ci DETAIL_TEXTURE_2D, which is replicated as necessary to fill the appropriate 1935bd8deadSopenharmony_ci number of texels. For example, if L is -2, the detail texture image is 1945bd8deadSopenharmony_ci replicated as necessary in x and y to form a single image whose dimensions 1955bd8deadSopenharmony_ci are four times larger than the level zero array of TEXTURE_2D. 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci The texture value computed from the primary texture (Ttexture) and 1985bd8deadSopenharmony_ci the value computed from the detail texture (Tdetail) are combined 1995bd8deadSopenharmony_ci in one of two ways to compute the final texture value (T). The 2005bd8deadSopenharmony_ci values of Ttexture, Tdetail, and T are treated as though they range 2015bd8deadSopenharmony_ci from 0.0 through 1.0 in these equations. 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ci If DETAIL_TEXTURE_MODE_SGIS of TEXTURE_2D is ADD, then 2045bd8deadSopenharmony_ci 2055bd8deadSopenharmony_ci T' = Ttexture + F(LOD) * (2*Tdetail-1) 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ci / 0 T' < 0 2085bd8deadSopenharmony_ci T = < T' 0 <= T' <= 1 2095bd8deadSopenharmony_ci \ 1 T' > 1 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci where F is a function of the level-of-detail parameter LOD, which is 2125bd8deadSopenharmony_ci represented by the Greek character lambda in the GL specification. In 2135bd8deadSopenharmony_ci effect, the detail texture is scaled and biased so that its range is 2145bd8deadSopenharmony_ci [-1,1]. The resulting signed value is scaled by a function of LOD, 2155bd8deadSopenharmony_ci added to the base texture, and clamped to [0,1]. 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ci If DETAIL_TEXTURE_MODE_SGIS or TEXTURE_2D is MODULATE, then 2185bd8deadSopenharmony_ci 2195bd8deadSopenharmony_ci T' = Ttexture * (1 + F(LOD) * (2*Tdetail-1)) 2205bd8deadSopenharmony_ci 2215bd8deadSopenharmony_ci / 0 T' < 0 2225bd8deadSopenharmony_ci T = < T' 0 <= T' <= 1 2235bd8deadSopenharmony_ci \ 1 T' > 1 2245bd8deadSopenharmony_ci 2255bd8deadSopenharmony_ci Here again the detail texture is scaled and biased so that its range 2265bd8deadSopenharmony_ci is [-1,1]. The resulting signed value is scaled by a function of LOD, 2275bd8deadSopenharmony_ci and biased by 1. This result scales the base texture, which is then 2285bd8deadSopenharmony_ci clamped to [0,1]. 2295bd8deadSopenharmony_ci 2305bd8deadSopenharmony_ci The function F of level-of-detail parameter LOD is specified by calling 2315bd8deadSopenharmony_ci DetailTexFuncSGIS with <target> set to TEXTURE_2D, <points> pointing at 2325bd8deadSopenharmony_ci an array of pairs of floating point values, and <n> set to the number 2335bd8deadSopenharmony_ci of value pairs in <points>. The first value of each value pair in 2345bd8deadSopenharmony_ci <points> specifies a value of LOD, and the second value of each value 2355bd8deadSopenharmony_ci pair specifies the corresponding function value. The order in which 2365bd8deadSopenharmony_ci the points are specified is not significant. The <n> value pairs in 2375bd8deadSopenharmony_ci <points> completely specify the function, replacing any previous 2385bd8deadSopenharmony_ci specification that may have existed. Since negative values of LOD 2395bd8deadSopenharmony_ci correspond to magnification and positive values correspond to 2405bd8deadSopenharmony_ci minification, the points should have negative values for LOD (though it 2415bd8deadSopenharmony_ci is not an error to specify positive values). 2425bd8deadSopenharmony_ci 2435bd8deadSopenharmony_ci Function F is evaluated by sorting the value pairs specified by 2445bd8deadSopenharmony_ci DetailTexFuncSGIS by LOD value, then fitting a curve through these 2455bd8deadSopenharmony_ci points. This curve may be linear between adjacent points, or it may be 2465bd8deadSopenharmony_ci smoothed, but it will pass exactly through the points, limited only by 2475bd8deadSopenharmony_ci the resolution of the implementation. The value pair with the lowest 2485bd8deadSopenharmony_ci LOD value specifies the function value F for all values of LOD less than 2495bd8deadSopenharmony_ci or equal to that pair's LOD. Likewise, the value pair with the greatest 2505bd8deadSopenharmony_ci LOD value specifies the function value F for all values of LOD greater 2515bd8deadSopenharmony_ci than or equal to that pair's LOD. F is undefined if two or more value 2525bd8deadSopenharmony_ci pairs have the same LOD value. 2535bd8deadSopenharmony_ci 2545bd8deadSopenharmony_ci If the texture magnification filter is LINEAR_DETAIL_SGIS, then both 2555bd8deadSopenharmony_ci the color and the alpha components of T are computed as described 2565bd8deadSopenharmony_ci in the equations above. If the filter is LINEAR_DETAIL_COLOR_SGIS, 2575bd8deadSopenharmony_ci then all components of T other than alpha are computed as described 2585bd8deadSopenharmony_ci above, and the alpha component of T is computed as if the texture 2595bd8deadSopenharmony_ci magnification filter were LINEAR. Finally, if the filter is 2605bd8deadSopenharmony_ci LINEAR_DETAIL_ALPHA_SGIS, the alpha component of T is computed as 2615bd8deadSopenharmony_ci described in the equations above, and all other components of T 2625bd8deadSopenharmony_ci are computed as if the texture magnification filter were LINEAR. 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci All OpenGL texture commands that accept a target value of TEXTURE_2D 2655bd8deadSopenharmony_ci also accept the target value DETAIL_TEXTURE_2D_SGIS. These commands 2665bd8deadSopenharmony_ci operate on and return state of the detail texture just as they do 2675bd8deadSopenharmony_ci of the 2-dimensional texture. 2685bd8deadSopenharmony_ci 2695bd8deadSopenharmony_ci If EXT_texture_object is supported, detail texture objects can be 2705bd8deadSopenharmony_ci created, operated on, and bound just as their 2D counterparts are. The 2715bd8deadSopenharmony_ci sets of detail textures and 2D textures are exclusive, however, so it 2725bd8deadSopenharmony_ci is not possible to use a texture object both as a 2D texture and as 2735bd8deadSopenharmony_ci a detail texture. By default zero is bound to DETAIL_TEXTURE_2D_SGIS, 2745bd8deadSopenharmony_ci just as zero is bound to TEXTURE_2D. 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci Specification of a detail texture 2775bd8deadSopenharmony_ci --------------------------------- 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ci A detail texture is specified by calling TexImage2D or CopyTexImage2DEXT 2805bd8deadSopenharmony_ci with <target> set to DETAIL_TEXTURE_2D_SGIS, <level> set to 0, <border> 2815bd8deadSopenharmony_ci set to 0, and the other parameters specified to generate the desired 2825bd8deadSopenharmony_ci image. 2835bd8deadSopenharmony_ci 2845bd8deadSopenharmony_ci Minification vs. Magnification 2855bd8deadSopenharmony_ci ------------------------------ 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci If the magnification filter is given by LINEAR_DETAIL_SGIS, 2885bd8deadSopenharmony_ci LINEAR_DETAIL_ALPHA_SGIS, or LINEAR_DETAIL_COLOR_SGIS, and the 2895bd8deadSopenharmony_ci minification filter is given by NEAREST_MIPMAP_NEAREST or 2905bd8deadSopenharmony_ci LINEAR_MIPMAP_NEAREST, then c = 0.5. The parameter c is used to 2915bd8deadSopenharmony_ci determine whether minification or magnification filtering is done, 2925bd8deadSopenharmony_ci as described in Section 3.8.2 of the GL Specification (Texture 2935bd8deadSopenharmony_ci Magnification). 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 2965bd8deadSopenharmony_ciand the Framebuffer) 2975bd8deadSopenharmony_ci 2985bd8deadSopenharmony_ci None 2995bd8deadSopenharmony_ci 3005bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions) 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ci GetDetailTexFuncSGIS is not included in display lists. 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 3055bd8deadSopenharmony_ci 3065bd8deadSopenharmony_ci Although many of the parameter values of a detail texture have no 3075bd8deadSopenharmony_ci effect on texture operation, they are maintained and may be queried. 3085bd8deadSopenharmony_ci There is no value associated with the binding point 3095bd8deadSopenharmony_ci DETAIL_TEXTURE_2D_SGIS, so it is not accepted as the <pname> parameter 3105bd8deadSopenharmony_ci of GetBooleanv, GetIntegerv, GetFloatv, or GetDoublev. The name of 3115bd8deadSopenharmony_ci the detail texture that is bound to DETAIL_TEXTURE_2D_SGIS is queried 3125bd8deadSopenharmony_ci by calling GetBooleanv, GetIntegerv, GetFloatv, or GetDoublev with 3135bd8deadSopenharmony_ci <pname> set to DETAIL_TEXTURE_2D_BINDING_SGIS. Zero is returned if 3145bd8deadSopenharmony_ci no texture has been bound. 3155bd8deadSopenharmony_ci 3165bd8deadSopenharmony_ci The number of points in the detail texture function specification of 3175bd8deadSopenharmony_ci a texture is queried by calling GetTexParameteriv or GetTexParameterfv 3185bd8deadSopenharmony_ci with <target> set to the target of the desired texture and <pname> set 3195bd8deadSopenharmony_ci to DETAIL_TEXTURE_FUNC_POINTS_SGIS. The function 3205bd8deadSopenharmony_ci GetDetailTexFuncSGIS returns in <points> all of the points in the detail 3215bd8deadSopenharmony_ci texture function of texture <target>. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ciAdditions to the GLX Specification 3245bd8deadSopenharmony_ci 3255bd8deadSopenharmony_ci None 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ciGLX Protocol 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci Two new GLX protocol commands are added. 3305bd8deadSopenharmony_ci 3315bd8deadSopenharmony_ci DetailTexFuncSGIS 3325bd8deadSopenharmony_ci 2 12+4*2*n rendering command length 3335bd8deadSopenharmony_ci 2 2051 rendering command opcode 3345bd8deadSopenharmony_ci 4 ENUM target 3355bd8deadSopenharmony_ci 4 INT32 n 3365bd8deadSopenharmony_ci 4*2*n LISTofFLOAT points 3375bd8deadSopenharmony_ci 3385bd8deadSopenharmony_ci GetDetailTexFuncSGIS 3395bd8deadSopenharmony_ci 1 CARD8 opcode (X assigned) 3405bd8deadSopenharmony_ci 1 17 GLX opcode (glXVendorPrivateWithReply) 3415bd8deadSopenharmony_ci 2 4 request length 3425bd8deadSopenharmony_ci 4 4096 vendor specific opcode 3435bd8deadSopenharmony_ci 4 GLX_CONTEXT_TAG context tag 3445bd8deadSopenharmony_ci 4 ENUM target 3455bd8deadSopenharmony_ci => 3465bd8deadSopenharmony_ci 1 1 reply 3475bd8deadSopenharmony_ci 1 unused 3485bd8deadSopenharmony_ci 2 CARD16 sequence number 3495bd8deadSopenharmony_ci 4 n reply length, m = n 3505bd8deadSopenharmony_ci 4 unused 3515bd8deadSopenharmony_ci 4 CARD32 n 3525bd8deadSopenharmony_ci 16 unused 3535bd8deadSopenharmony_ci n*4 LISTofFLOAT32 points 3545bd8deadSopenharmony_ci 3555bd8deadSopenharmony_ci Note that n may be zero, indicating that a GL error occurred. 3565bd8deadSopenharmony_ci Otherwise n must be even and n >= 2. 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ciDependencies on EXT_texture 3595bd8deadSopenharmony_ci 3605bd8deadSopenharmony_ci EXT_texture is required. 3615bd8deadSopenharmony_ci 3625bd8deadSopenharmony_ciDependencies on EXT_texture3D 3635bd8deadSopenharmony_ci 3645bd8deadSopenharmony_ci None, because detail texture is not specified for 3D textures. This 3655bd8deadSopenharmony_ci extensions is designed to allow a subsequent extension to define 3D 3665bd8deadSopenharmony_ci detail textures, however. 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ciDependencies on EXT_subtexture 3695bd8deadSopenharmony_ci 3705bd8deadSopenharmony_ci If EXT_subtexture is not implemented, then the references to 3715bd8deadSopenharmony_ci TexSubImage2DEXT and CopyTexSubImage2DEXT in this file are invalid, 3725bd8deadSopenharmony_ci and should be ignored. 3735bd8deadSopenharmony_ci 3745bd8deadSopenharmony_ciDependencies on EXT_copy_texture 3755bd8deadSopenharmony_ci 3765bd8deadSopenharmony_ci If EXT_copy_texture is not implemented, then the references to 3775bd8deadSopenharmony_ci CopyTexImage2DEXT and CopyTexSubImage2DEXT in this file are invalid, 3785bd8deadSopenharmony_ci and should be ignored. 3795bd8deadSopenharmony_ci 3805bd8deadSopenharmony_ciDependencies on EXT_texture_object 3815bd8deadSopenharmony_ci 3825bd8deadSopenharmony_ci If EXT_texture_object is not implemented, then the references to 3835bd8deadSopenharmony_ci BindTextureEXT are invalid, and should be ignored. 3845bd8deadSopenharmony_ci 3855bd8deadSopenharmony_ci If EXT_texture_object is implemented, the state values named 3865bd8deadSopenharmony_ci 3875bd8deadSopenharmony_ci DETAIL_TEXTURE_LEVEL_SGIS 3885bd8deadSopenharmony_ci DETAIL_TEXTURE_MODE_SGIS 3895bd8deadSopenharmony_ci DETAIL_TEXTURE_FUNC_POINTS_SGIS 3905bd8deadSopenharmony_ci <DETAIL_TEXTURE_FUNC> 3915bd8deadSopenharmony_ci 3925bd8deadSopenharmony_ci are added to the state vector of each texture object. When an attribute 3935bd8deadSopenharmony_ci set that includes texture information is popped, the bindings and 3945bd8deadSopenharmony_ci enables are first restored to their pushed values, then the bound 3955bd8deadSopenharmony_ci textures have their detail parameters restored to their pushed values. 3965bd8deadSopenharmony_ci 3975bd8deadSopenharmony_ciErrors 3985bd8deadSopenharmony_ci 3995bd8deadSopenharmony_ci INVALID_VALUE is generated if TexImage2D or CopyTexImage2DEXT 4005bd8deadSopenharmony_ci parameter <target> is DETAIL_TEXTURE_2D_SGIS, and parameter <level> 4015bd8deadSopenharmony_ci or parameter <border> is not zero. 4025bd8deadSopenharmony_ci 4035bd8deadSopenharmony_ci INVALID_VALUE is generated if BindTextureEXT parameter <target> is 4045bd8deadSopenharmony_ci DETAIL_TEXTURE_2D_SGIS, and parameter <texture> is not the name of a 4055bd8deadSopenharmony_ci detail texture, the name of an as yet unbound texture, or zero. 4065bd8deadSopenharmony_ci 4075bd8deadSopenharmony_ci INVALID_VALUE is generated if TexParameteri, TexParameterf, 4085bd8deadSopenharmony_ci TexParameteriv, or TexParameterfv parameter <pname> is 4095bd8deadSopenharmony_ci DETAIL_TEXTURE_MODE_SGIS, and parameter <param> is not ADD or MODULATE, 4105bd8deadSopenharmony_ci or parameter <params> doesn't point to ADD or MODULATE. 4115bd8deadSopenharmony_ci 4125bd8deadSopenharmony_ci INVALID_VALUE is generated if TexParameteri, TexParameterf, 4135bd8deadSopenharmony_ci TexParameteriv, or TexParameterfv parameter <pname> is 4145bd8deadSopenharmony_ci DETAIL_TEXTURE_LEVEL_SGIS, and parameter <param> is positive, 4155bd8deadSopenharmony_ci or parameter <params> points to a positive value. 4165bd8deadSopenharmony_ci 4175bd8deadSopenharmony_ci INVALID_ENUM is generated if DetailTexFuncSGIS or 4185bd8deadSopenharmony_ci GetDetailTexFuncSGIS parameter <target> is not TEXTURE_2D. 4195bd8deadSopenharmony_ci 4205bd8deadSopenharmony_ci INVALID_VALUE is generated if DetailTexFuncSGIS parameter <n> is 4215bd8deadSopenharmony_ci negative. 4225bd8deadSopenharmony_ci 4235bd8deadSopenharmony_ci INVALID_OPERATION is generated if DetailTexFuncSGIS or 4245bd8deadSopenharmony_ci GetDetailTexFuncSGIS is executed between execution of Begin and the 4255bd8deadSopenharmony_ci corresponding execution to End. 4265bd8deadSopenharmony_ci 4275bd8deadSopenharmony_ciNew State 4285bd8deadSopenharmony_ci 4295bd8deadSopenharmony_ci Get Value Get Command Type Initial Value Attribute 4305bd8deadSopenharmony_ci --------- ----------- ---- ------------- --------- 4315bd8deadSopenharmony_ci DETAIL_TEXTURE_2D_BINDING_SGIS GetIntegerv Z+ 0 texture 4325bd8deadSopenharmony_ci DETAIL_TEXTURE_LEVEL_SGIS GetTexParameteriv n x Z- -4 texture 4335bd8deadSopenharmony_ci DETAIL_TEXTURE_MODE_SGIS GetTexParameteriv n x Z2 ADD texture 4345bd8deadSopenharmony_ci DETAIL_TEXTURE_FUNC_POINTS_SGIS GetTexParameteriv n x Z+ 2 texture 4355bd8deadSopenharmony_ci <DETAIL_TEXTURE_FUNC> GetDetailTexFuncSGIS n x m x R {0, 0}, {-4, 1} texture 4365bd8deadSopenharmony_ci 4375bd8deadSopenharmony_ciNew Implementation Dependent State 4385bd8deadSopenharmony_ci 4395bd8deadSopenharmony_ci None 440