1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
<!DOCTYPE refentry [ <!ENTITY % mathent SYSTEM "math.ent"> %mathent; ]>
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="gl_HelperInvocation">
<info>
<copyright>
<year>2014</year>
<holder>Khronos Group</holder>
</copyright>
</info>
<refmeta>
<refentrytitle>gl_HelperInvocation</refentrytitle>
<manvolnum>3G</manvolnum>
</refmeta>
<refnamediv>
<refname>gl_HelperInvocation</refname>
<refpurpose>indicates whether a fragment shader invocation is a helper invocation</refpurpose>
</refnamediv>
<refsynopsisdiv>
<title>Declaration</title>
<fieldsynopsis>
<modifier>in</modifier>
<type>bool</type>
<varname>gl_HelperInvocation</varname>
</fieldsynopsis>
</refsynopsisdiv>
<refsect1 xml:id="description"><title>Description</title>
<para>
The value <varname>gl_HelperInvocation</varname> is true if the
fragment shader invocation is considered a helper invocation and
is false otherwise. A helper invocation is a fragment-shader
invocation that is created solely for the purposes of evaluating
derivatives for use in non-helper fragment-shader invocations.
Such derivatives are computed implicitly in the built-in
function
<citerefentry><refentrytitle>texture</refentrytitle></citerefentry>(),
and explicitly in the derivative functions
<citerefentry><refentrytitle>dFdx</refentrytitle></citerefentry>()
and <function>dFdy</function>.
</para>
<para>
Fragment shader helper invocations execute the same shader code
as non-helper invocations, but will not have side effects that
modify the framebuffer or other shader-accessible memory. In
particular:
<itemizedlist>
<listitem>
<para>
Fragments corresponding to helper invocations are
discarded when shader execution is complete, without
updating the framebuffer.
</para>
</listitem>
<listitem>
<para>
Stores to image and buffer variables performed by
helper invocations have no effect on the underlying
image or buffer memory.
</para>
</listitem>
<listitem>
<para>
Atomic operations to image, buffer, or atomic
counter variables performed by helper invocations
have no effect on the underlying image or buffer
memory. The values returned by such atomic
operations are undefined.
</para>
</listitem>
</itemizedlist>
</para>
<para>
Helper invocations may be generated for pixels not covered by a
primitive being rendered. While fragment shader inputs qualified
with centroid are normally required to be sampled in the
intersection of the pixel and the primitive, the requirement is
ignored for such pixels since there is no intersection between
the pixel and primitive.
</para>
<para>
Helper invocations may also be generated for fragments that are
covered by a primitive being rendered when the fragment is
killed by early fragment tests (using the early_fragment_tests
qualifier) or where the implementation is able to determine that
executing the fragment shader would have no effect other than
assisting in computing derivatives for other fragment shader
invocations.
</para>
<para>
The set of helper invocations generated when processing any set
of primitives is implementation dependent.
</para>
</refsect1>
<refsect1 xml:id="versions"><title>Version Support</title>
<informaltable>
<tgroup cols="13" align="left">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="varhead.xml" xpointer="xpointer(/*/*)"/>
<tbody>
<row>
<entry>gl_HelperInvocation</entry>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="version.xml" xpointer="xpointer(/*/*[@role='45']/*)"/>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 xml:id="seealso"><title>See Also</title>
<para>
<citerefentry><refentrytitle>dFdx</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>texture</refentrytitle></citerefentry>
</para>
</refsect1>
<refsect1 xml:id="Copyright"><title>Copyright</title>
<para>
Copyright <trademark class="copyright"/> 2014 Khronos Group.
This material may be distributed subject to the terms and conditions set forth in
the Open Publication License, v 1.0, 8 June 1999.
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://opencontent.org/openpub/">http://opencontent.org/openpub/</link>.
</para>
</refsect1>
</refentry>
|