15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARB_fragment_program_shadow 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARB_fragment_program_shadow 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Pat Brown 125bd8deadSopenharmony_ci Benj Lipchak 135bd8deadSopenharmony_ci Eric Werness 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ci and contributors to the ARB_vertex_program and 165bd8deadSopenharmony_ci ARB_fragment_program working groups, the products 175bd8deadSopenharmony_ci of which provided the basis for this spec. 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciContact 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci Bill Licea-Kane, AMD (bill.licea-kane 'at' amd.com) 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciNotice 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci Copyright (c) 2003-2013 The Khronos Group Inc. Copyright terms at 265bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ciSpecification Update Policy 295bd8deadSopenharmony_ci 305bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 315bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL Working Group. For 325bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 335bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 345bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 355bd8deadSopenharmony_ci described in more detail at 365bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 375bd8deadSopenharmony_ci 385bd8deadSopenharmony_ciIP Status 395bd8deadSopenharmony_ci 405bd8deadSopenharmony_ci Unknown, but Microsoft claims to own intellectual property 415bd8deadSopenharmony_ci related to ARB_fragment_program. This extension is 425bd8deadSopenharmony_ci an extension to ARB_fragment_program. 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ciStatus 455bd8deadSopenharmony_ci 465bd8deadSopenharmony_ci Complete. Approved by ARB on December 16, 2003 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ciVersion 495bd8deadSopenharmony_ci 505bd8deadSopenharmony_ci Last Modified Date: November 4, 2006 515bd8deadSopenharmony_ci Revision: 6 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ciNumber 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci ARB Extension #36 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ciDependencies 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci The extension is written against the OpenGL 1.3 Specification. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci ARB_fragment_program is required. 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci ARB_shadow is required. 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ci EXT_texture_rectange affects the definition of this extension. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ciOverview 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci This extension extends ARB_fragment_program to remove 705bd8deadSopenharmony_ci the interaction with ARB_shadow. 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci This extension defines the program option 735bd8deadSopenharmony_ci "ARB_fragment_program_shadow". 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci If a fragment program specifies the option "ARB_fragment_program_shadow" 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci SHADOW1D, SHADOW2D, SHADOWRECT 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci are added as texture targets. When shadow map comparisons are 805bd8deadSopenharmony_ci desired, specify the SHADOW1D, SHADOW2D, or SHADOWRECT texture 815bd8deadSopenharmony_ci targets in texture instructions. 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci Programs must assure that the comparison mode for each depth 845bd8deadSopenharmony_ci texture (TEXTURE_COMPARE_MODE) and/or the internal texture 855bd8deadSopenharmony_ci format (DEPTH_COMPONENT) and the targets of the texture lookup 865bd8deadSopenharmony_ci instructions match. Otherwise, if the comparison mode 875bd8deadSopenharmony_ci and/or the internal texture format are inconsistent with the 885bd8deadSopenharmony_ci texture target, the results of the texture lookup are undefined. 895bd8deadSopenharmony_ci 905bd8deadSopenharmony_ciIssues 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci (1) What should this extension be called? 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci RESOLVED: ARB_fragment_program_shadow. Shadow support 955bd8deadSopenharmony_ci is the only new feature. The name ARB_fragment_program2 965bd8deadSopenharmony_ci should be used for a far more major revision to 975bd8deadSopenharmony_ci ARB_fragment_program. ARB_fragment_program1_1 is 985bd8deadSopenharmony_ci less descriptive. 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci (2) Should this extension use the header string "!!ARBfp1.1" or 1015bd8deadSopenharmony_ci a program option "ARB_fragment_program_shadow"? 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci RESOLVED: Program option "ARB_fragment_program_shadow". 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci (3) What form should the ARB_fragment_program_shadow option take? 1065bd8deadSopenharmony_ci 1075bd8deadSopenharmony_ci a. New sampler instructions. 1085bd8deadSopenharmony_ci SHX result.color.a, fragment.texcoord[1], texture[0], 2D; 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci b. New texture modifiers. 1115bd8deadSopenharmony_ci TEX result.color.a, fragment.texcoord[1], texture[0], 2D,SHADOW; 1125bd8deadSopenharmony_ci 1135bd8deadSopenharmony_ci c. New texture targets. 1145bd8deadSopenharmony_ci TEX result.color.a, fragment.texcoord[1], texture[0], SHADOW2D; 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci d. New sampler instructions AND new texture modifiers. 1175bd8deadSopenharmony_ci SHX result.color.a, fragment.texcoord[1], texture[0], 2D,SHADOW; 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ci e. New sampler instructions AND new texture targets. 1205bd8deadSopenharmony_ci SHX result.color.a, fragment.texcoord[1], texture[0], SHADOW2D; 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci RESOLVED: Choose the simplest option c, add new texture targets. 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci All of the above forms are functionally equivalent. 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ci An earlier draft proposed option a, adding six new shadow 1275bd8deadSopenharmony_ci instructions. The required shadow instructions are 1285bd8deadSopenharmony_ci three variants of shadow instruction (non-projective, projective, 1295bd8deadSopenharmony_ci and biased), and the same instructions with the modifier _SAT. 1305bd8deadSopenharmony_ci 1315bd8deadSopenharmony_ci Option b adds texture modifiers but requires additional semantic 1325bd8deadSopenharmony_ci restrictions. 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci Option c adds texture targets only. It is a sufficient 1355bd8deadSopenharmony_ci and simple change to one grammar rule. 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci Option d and e are listed for completeness. They require 1385bd8deadSopenharmony_ci additional instructions and additional semantic restrictions. 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ci Note that option e is most similar to the resolution of 1415bd8deadSopenharmony_ci this issue by ARB_fragment_shader and the OpenGL Shading Language. 1425bd8deadSopenharmony_ci The OpenGL Shading Language has both built-in texture and 1435bd8deadSopenharmony_ci shadow functions and sampler types, analogous to texture 1445bd8deadSopenharmony_ci instructions and texture targets. The resolution here 1455bd8deadSopenharmony_ci drops the added reduntancy and potential error checking 1465bd8deadSopenharmony_ci in favor of simplicity, but is otherwise consistent. 1475bd8deadSopenharmony_ci This resolution is also consistent with the precident 1485bd8deadSopenharmony_ci already established in ARB_fragment_program, since 1495bd8deadSopenharmony_ci we have a TEX instruction, not a TEX1D, TEX2D, TEXCUBE, 1505bd8deadSopenharmony_ci TEX3D, TEXRECT instructions. 1515bd8deadSopenharmony_ci 1525bd8deadSopenharmony_ci (4) How should ARB_fragment_program_shadow function? 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci a. Simply remove the interaction with ARB_shadow so that 1555bd8deadSopenharmony_ci TEXTURE_COMPARE_MODE behaves exactly as specified in the 1565bd8deadSopenharmony_ci OpenGL 1.4 specification. 1575bd8deadSopenharmony_ci 1585bd8deadSopenharmony_ci b. Add "SHADOW" targets to texture lookup instructions. 1595bd8deadSopenharmony_ci TEXTURE_COMPARE_MODE is ignored. For samples from a SHADOW target 1605bd8deadSopenharmony_ci TEXTURE_COMPARE_MODE is treated as COMPARE_R_TO_TEXTURE; 1615bd8deadSopenharmony_ci otherwise, it is treated as NONE. 1625bd8deadSopenharmony_ci 1635bd8deadSopenharmony_ci c. Like (b), but with undefined results if TEXTURE_COMPARE_MODE and/or 1645bd8deadSopenharmony_ci the internal format of the texture does not match the target. 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci d. A hybrid of (a) and (b), where the SHADOW target means to use the 1675bd8deadSopenharmony_ci TEXTURE_COMPARE_MODE state. 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ci RESOLVED - Option c, undefined behavior when the target and 1705bd8deadSopenharmony_ci mode do not match. 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci Program text is not simply loaded, it is compiled, optimized and 1735bd8deadSopenharmony_ci then loaded. Options a and d would remove information from the optimizer. 1745bd8deadSopenharmony_ci Which components of the texture coordinate are required for the sample? 1755bd8deadSopenharmony_ci Specifically, is the r component of the texture coordinate required? 1765bd8deadSopenharmony_ci Options b and c are both sufficient and retain the information 1775bd8deadSopenharmony_ci required by optimizers. Option c is consistent with the resolution 1785bd8deadSopenharmony_ci chosen by ARB_fragment_shader. 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci (5) What if additional texture compare modes are added by 1815bd8deadSopenharmony_ci future extensions to ARB_SHADOW? 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci We do not anticipate future extensions adding additional 1845bd8deadSopenharmony_ci texture compare modes. Only the additional mode COMPARE_T_TO_TEXTURE 1855bd8deadSopenharmony_ci has even marginal utility, and then only for SHADOW1D targets. 1865bd8deadSopenharmony_ci However, a future extension adding additional texture compare 1875bd8deadSopenharmony_ci modes is not precluded. The language in this specification 1885bd8deadSopenharmony_ci is carefully, if somewhat awkwardly, written to say the 1895bd8deadSopenharmony_ci TEXTURE_COMPARE_MODE either "is NONE" or "is not NONE. 1905bd8deadSopenharmony_ci 1915bd8deadSopenharmony_ci (6) Does EXT_shadow_funcs interact with this extension? 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ci RESOLVED: It doesn't. ARB_shadow supports LEQUAL or GEQUAL 1945bd8deadSopenharmony_ci comparison functions. EXT_shadow_funcs simply adds 1955bd8deadSopenharmony_ci the additional functions LESS, GREATER, EQUAL, NOTEQUAL, 1965bd8deadSopenharmony_ci ALWAYS, and NEVER. Whichever function is specified will 1975bd8deadSopenharmony_ci be used for the comparison function. 1985bd8deadSopenharmony_ci 1995bd8deadSopenharmony_ci (7) Does ARB_shadow_ambient interact with this extension? 2005bd8deadSopenharmony_ci 2015bd8deadSopenharmony_ci RESOLVED: It doesn't. ARB_shadow returns a result 2025bd8deadSopenharmony_ci in the range [0,1]. ARB_shadow_ambient simply 2035bd8deadSopenharmony_ci maps this range to [TEXTURE_COMPARE_FAIL_ARB, 1]. 2045bd8deadSopenharmony_ci The result will be returned in the specified range. 2055bd8deadSopenharmony_ci 2065bd8deadSopenharmony_ci (8) How would an existing fragment program be ported to use the 2075bd8deadSopenharmony_ci program option ARB_fragment_program_shadow? 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ci RESOLVED: Fairly simply, but with a caveat on undefined behavior. 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci !!ARBfp1.0 2125bd8deadSopenharmony_ci # A simple example of shadow map (R <= Dt) 2135bd8deadSopenharmony_ci # 2145bd8deadSopenharmony_ci # SHOULD make sure that the 2D texture bound to texture unit 0: 2155bd8deadSopenharmony_ci # texture format of DEPTH_COMPONENT (for highest quality comparison) 2165bd8deadSopenharmony_ci # TEXTURE_MAG_FILTER is NEAREST 2175bd8deadSopenharmony_ci # TEXTURE_MIN_FILTER is NEAREST or NEAREST_MIPMAP_NEAREST 2185bd8deadSopenharmony_ci # Assumes DEPTH_TEXTURE_MODE is LUMINANCE or INTENSITY 2195bd8deadSopenharmony_ci # 2205bd8deadSopenharmony_ci TEMP Result; 2215bd8deadSopenharmony_ci ALIAS Dt = Result; 2225bd8deadSopenharmony_ci TEX Dt, fragment.texcoord[0], texture[0], 2D; 2235bd8deadSopenharmony_ci SGE Result, Dt.x, fragment.texcoord[0].z; # R <= Dt 2245bd8deadSopenharmony_ci 2255bd8deadSopenharmony_ci !!ARBfp1.0 2265bd8deadSopenharmony_ci OPTION ARB_fragment_program_shadow; 2275bd8deadSopenharmony_ci # A simple example of shadow map (R<= Dt) 2285bd8deadSopenharmony_ci # 2295bd8deadSopenharmony_ci # MUST make sure that the 2D texture bound to texture unit 0: 2305bd8deadSopenharmony_ci # texture format of DEPTH_COMPONENT and a 2315bd8deadSopenharmony_ci # TEXTURE_COMPARE_MODE of COMPARE_R_TO_TEXTURE 2325bd8deadSopenharmony_ci # Otherwise, the Result is undefined. 2335bd8deadSopenharmony_ci # 2345bd8deadSopenharmony_ci # Remember also that to get R <= Dt to set: 2355bd8deadSopenharmony_ci # TEXTURE_COMPARE_FUNC of LEQUAL 2365bd8deadSopenharmony_ci # 2375bd8deadSopenharmony_ci # A single compare equivalent to the above example will result if: 2385bd8deadSopenharmony_ci # TEXTURE_MAG_FILTER is NEAREST 2395bd8deadSopenharmony_ci # TEXTURE_MIN_FILTER is NEAREST or NEAREST_MIPMAP_NEAREST 2405bd8deadSopenharmony_ci # Otherwise, percent closer filtering may be applied. 2415bd8deadSopenharmony_ci # 2425bd8deadSopenharmony_ci TEMP Result; 2435bd8deadSopenharmony_ci TEX Result, fragment.texcoord[0], texture[0], SHADOW2D; 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ciNew Procedures and Functions 2465bd8deadSopenharmony_ci 2475bd8deadSopenharmony_ci None 2485bd8deadSopenharmony_ci 2495bd8deadSopenharmony_ciNew Tokens 2505bd8deadSopenharmony_ci 2515bd8deadSopenharmony_ci None 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation) 2545bd8deadSopenharmony_ci 2555bd8deadSopenharmony_ci None 2565bd8deadSopenharmony_ci 2575bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization) 2585bd8deadSopenharmony_ci 2595bd8deadSopenharmony_ci Modify Section 3.11.2 Fragment Program Grammar and Semantic Restrictions 2605bd8deadSopenharmony_ci 2615bd8deadSopenharmony_ci Replace <texTarget> grammar rule with 2625bd8deadSopenharmony_ci 2635bd8deadSopenharmony_ci <texTarget> ::= "1D" 2645bd8deadSopenharmony_ci | "2D" 2655bd8deadSopenharmony_ci | "3D" 2665bd8deadSopenharmony_ci | "CUBE" 2675bd8deadSopenharmony_ci | "RECT" 2685bd8deadSopenharmony_ci | <shadowTarget> (if program option is present) 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci <shadowTarget> ::= "SHADOW1D" 2715bd8deadSopenharmony_ci | "SHADOW2D" 2725bd8deadSopenharmony_ci | "SHADOWRECT" 2735bd8deadSopenharmony_ci 2745bd8deadSopenharmony_ci Add Section 3.11.4.5.3 Fragment Program Shadow Option 2755bd8deadSopenharmony_ci 2765bd8deadSopenharmony_ci If a fragment program specifies the "ARB_fragment_program_shadow" 2775bd8deadSopenharmony_ci program option, the <texTarget> rule is modified to add the 2785bd8deadSopenharmony_ci texture targets SHADOW1D, SHADOW2D and SHADOWRECT (See Section 3.11.2). 2795bd8deadSopenharmony_ci 2805bd8deadSopenharmony_ci Modify Section 3.11.6 Fragment Program Texture Instruction Set 2815bd8deadSopenharmony_ci 2825bd8deadSopenharmony_ci (replace 1st through 4th paragraphs with the following paragraphs) 2835bd8deadSopenharmony_ci 2845bd8deadSopenharmony_ci The first three texture instructions described below specify the 2855bd8deadSopenharmony_ci mapping of 4-tuple input vectors to 4-tuple output vectors. 2865bd8deadSopenharmony_ci The sampling of the texture works as described in section 3.8, 2875bd8deadSopenharmony_ci except that texture environments and texture functions are not 2885bd8deadSopenharmony_ci applicable, and the texture enables hierarchy is replaced by explicit 2895bd8deadSopenharmony_ci references to the desired texture target (i.e., 1D, 2D, 3D, cube map, 2905bd8deadSopenharmony_ci rectangle). These texture instructions specify how the 4-tuple is 2915bd8deadSopenharmony_ci mapped into the coordinates used for sampling. The following function 2925bd8deadSopenharmony_ci is used to describe the texture sampling in the descriptions below: 2935bd8deadSopenharmony_ci 2945bd8deadSopenharmony_ci vec4 TextureSample(float s, float t, float r, float lodBias, 2955bd8deadSopenharmony_ci int texImageUnit, enum texTarget); 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci Note that not all three texture coordinates, s, t, and r, are 2985bd8deadSopenharmony_ci used by all texture targets. In particular, 1D texture targets only 2995bd8deadSopenharmony_ci use the s component. 2D and RECT (non-power-of-two) texture 3005bd8deadSopenharmony_ci targets only use the s and t components. SHADOW1D texture 3015bd8deadSopenharmony_ci targets only use the s and r components. The descriptions of the 3025bd8deadSopenharmony_ci texture instructions below supply all three components, as would 3035bd8deadSopenharmony_ci be the case with CUBE, 3D, SHADOW2D, and SHADOWRECT targets. 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci If a fragment program samples from a texture target on a texture 3065bd8deadSopenharmony_ci image unit where the bound texture object is not complete, as 3075bd8deadSopenharmony_ci defined in section 3.8.9, the result will be the vector 3085bd8deadSopenharmony_ci (R, G, B, A) = (0, 0, 0, 1). 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci If a fragment program does not specify the "ARB_fragment_program_shadow" 3115bd8deadSopenharmony_ci program option, and if a fragment program samples from a texture 3125bd8deadSopenharmony_ci target of 1D, 2D, or RECT, it is as if TEXTURE_COMPARE_MODE_ARB is NONE. 3135bd8deadSopenharmony_ci 3145bd8deadSopenharmony_ci If a fragment program specifies the "ARB_fragment_program_shadow" 3155bd8deadSopenharmony_ci program option, the result returned of a sample from a texture target on 3165bd8deadSopenharmony_ci a texture image unit is undefined if: 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ci the texture target is 1D, 2D, or RECT, and 3195bd8deadSopenharmony_ci the texture object's internal format is DEPTH_COMPONENT_ARB, and 3205bd8deadSopenharmony_ci the TEXTURE_COMPARE_MODE_ARB is not NONE; 3215bd8deadSopenharmony_ci 3225bd8deadSopenharmony_ci or 3235bd8deadSopenharmony_ci 3245bd8deadSopenharmony_ci the texture target is SHADOW1D, SHADOW2D, SHADOWRECT, and 3255bd8deadSopenharmony_ci the texture object's internal format is DEPTH_COMPONENT_ARB, and 3265bd8deadSopenharmony_ci the TEXTURE_COMPARE_MODE_ARB is NONE; 3275bd8deadSopenharmony_ci 3285bd8deadSopenharmony_ci or 3295bd8deadSopenharmony_ci 3305bd8deadSopenharmony_ci the texture target is SHADOW1D, SHADOW2D, SHADOWRECT, and 3315bd8deadSopenharmony_ci the texture object's internal format is not DEPTH_COMPONENT_ARB. 3325bd8deadSopenharmony_ci 3335bd8deadSopenharmony_ci A fragment program will fail to load if it attempts to sample from 3345bd8deadSopenharmony_ci multiple texture targets on the same texture image unit. For 3355bd8deadSopenharmony_ci example, the following programs would fail to load: 3365bd8deadSopenharmony_ci 3375bd8deadSopenharmony_ci !!ARBfp1.0 3385bd8deadSopenharmony_ci TEX result.color.rgb, fragment.texcoord[0], texture[0], 2D; 3395bd8deadSopenharmony_ci TEX result.color.a, fragment.texcoord[1], texture[0], 3D; 3405bd8deadSopenharmony_ci END 3415bd8deadSopenharmony_ci 3425bd8deadSopenharmony_ci !!ARBfp1.0 3435bd8deadSopenharmony_ci OPTION ARB_fragment_program_shadow; 3445bd8deadSopenharmony_ci TEX result.color.rgb, fragment.texcoord[0], texture[0], 2D; 3455bd8deadSopenharmony_ci TEX result.color.a, fragment.texcoord[1], texture[0], SHADOW2D; 3465bd8deadSopenharmony_ci END 3475bd8deadSopenharmony_ci 3485bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment Operations and the Frame Buffer) 3495bd8deadSopenharmony_ci 3505bd8deadSopenharmony_ci None 3515bd8deadSopenharmony_ci 3525bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 1.3 Specification (Special Functions) 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ci None 3555bd8deadSopenharmony_ci 3565bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.3 Specification (State and State Requests) 3575bd8deadSopenharmony_ci 3585bd8deadSopenharmony_ci None 3595bd8deadSopenharmony_ci 3605bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 1.3 Specification (Invariance) 3615bd8deadSopenharmony_ci 3625bd8deadSopenharmony_ci None 3635bd8deadSopenharmony_ci 3645bd8deadSopenharmony_ciAdditions to the AGL/GLX/WGL Specifications 3655bd8deadSopenharmony_ci 3665bd8deadSopenharmony_ci None 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ciDependencies on EXT_texture_rectangle 3695bd8deadSopenharmony_ci 3705bd8deadSopenharmony_ci If EXT_texture_rectangle is not supported: 3715bd8deadSopenharmony_ci 3725bd8deadSopenharmony_ci Section 3.11.2 should be modified by removing the line: 3735bd8deadSopenharmony_ci 3745bd8deadSopenharmony_ci | "SHADOWRECT" 3755bd8deadSopenharmony_ci 3765bd8deadSopenharmony_ci from the <shadowTarget> grammar rule; 3775bd8deadSopenharmony_ci 3785bd8deadSopenharmony_ci and Section 3.11.6 should be modified by removing the discussion 3795bd8deadSopenharmony_ci of the rectangle shadow texture target. 380