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