Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / webgl / src / extensions / WEBGL_draw_buffers / extension.xml
1 <?xml version="1.0"?>
2
3 <ratified href="WEBGL_draw_buffers/">
4   <name>WEBGL_draw_buffers</name>
5   <contact>
6     <a href="https://www.khronos.org/webgl/public-mailing-list/">WebGL working group</a> (public_webgl 'at' khronos.org)
7   </contact>
8   <contributors>
9     <contributor>Members of the WebGL working group</contributor>
10   </contributors>
11   <number>18</number>
12   <depends>
13     <api version="1.0"/>
14     <core version="2.0">
15       <glsl version="300 es"/>
16     </core>
17   </depends>
18   <overview>
19     <mirrors href="https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers.txt" name="EXT_draw_buffers">
20       <addendum>
21         The implementation must support a minimum of 4 color attachments.
22       </addendum>
23       <addendum>
24         The value of the <code>MAX_COLOR_ATTACHMENTS_WEBGL</code> parameter must be greater than or
25         equal to that of the <code>MAX_DRAW_BUFFERS_WEBGL</code> parameter.
26       </addendum>
27       <addendum>
28         If:
29         <ul>
30           <li> A framebuffer's color attachments are all textures allocated with format <code>RGBA</code>
31                and type <code>UNSIGNED_BYTE</code>, and </li>
32           <li> The framebuffer has either:
33             <ul>
34               <li> No depth or stencil attachment </li>
35               <li> A valid <code>DEPTH</code> or <code>DEPTH_STENCIL</code> attachment </li>
36             </ul></li>
37         </ul>
38         Then a call to <code>checkFramebufferStatus</code> against this framebuffer must not return
39         <code>FRAMEBUFFER_UNSUPPORTED</code>. (In other words, the implementation must support the
40         use of <code>RGBA/UNSIGNED_BYTE</code> textures as color attachments, plus either a
41         <code>DEPTH</code> or <code>DEPTH_STENCIL</code> attachment.)
42       </addendum>
43       <addendum>
44         Attaching <code>n</code> consecutive color attachments starting at COLOR_ATTACHMENT0_WEBGL,
45         where <code>n</code> is between 1 and <code>MAX_DRAW_BUFFERS_WEBGL</code>, must not return
46         <code>FRAMEBUFFER_UNSUPPORTED</code> from a call to <code>checkFramebufferStatus</code>. In
47         other words, if <code>MAX_DRAW_BUFFERS_WEBGL</code> is 4, then the implementation is
48         required to support the following combinations of color attachments:
49
50         <ul>
51           <li> <code>COLOR_ATTACHMENT0_WEBGL = RGBA/UNSIGNED_BYTE</code></li>
52           <li> <code>COLOR_ATTACHMENT0_WEBGL = RGBA/UNSIGNED_BYTE</code><br/>
53                <code>COLOR_ATTACHMENT1_WEBGL = RGBA/UNSIGNED_BYTE</code><br/></li>
54           <li> <code>COLOR_ATTACHMENT0_WEBGL = RGBA/UNSIGNED_BYTE</code><br/>
55                <code>COLOR_ATTACHMENT1_WEBGL = RGBA/UNSIGNED_BYTE</code><br/>
56                <code>COLOR_ATTACHMENT2_WEBGL = RGBA/UNSIGNED_BYTE</code><br/></li>
57           <li> <code>COLOR_ATTACHMENT0_WEBGL = RGBA/UNSIGNED_BYTE</code><br/>
58                <code>COLOR_ATTACHMENT1_WEBGL = RGBA/UNSIGNED_BYTE</code><br/>
59                <code>COLOR_ATTACHMENT2_WEBGL = RGBA/UNSIGNED_BYTE</code><br/>
60                <code>COLOR_ATTACHMENT3_WEBGL = RGBA/UNSIGNED_BYTE</code><br/></li>
61         </ul>
62       </addendum>
63       <addendum>
64         Although the extension name is prefixed with WEBGL the extension must be enabled with the 
65         <code>#extension GL_EXT_draw_buffers</code> directive, as shown in the sample code, to use
66         the extension in a shader.
67
68         Likewise the shading language preprocessor <code>#define GL_EXT_draw_buffers</code>, will be defined to 1 if the extension is supported.
69       </addendum>
70       <addendum>
71         The value of <code>gl_MaxDrawBuffers</code> should match <code>MAX_DRAW_BUFFERS_WEBGL</code> from the API if the extension is enabled in a WebGL context; otherwise, the value should be 1. Whether or not the extension is enabled with the <code>#extension GL_EXT_draw_buffers</code> directive in a shader does not affect the value of <code>gl_MaxDrawBuffers</code>.
72       </addendum>
73     </mirrors>
74     <features>
75       <feature>
76       Adds support for multiple color buffers and color outputs from fragment shaders.
77       </feature>
78     </features>
79   </overview>
80   <idl xml:space="preserve">
81 [NoInterfaceObject]
82 interface WEBGL_draw_buffers {
83     const GLenum COLOR_ATTACHMENT0_WEBGL     = 0x8CE0;
84     const GLenum COLOR_ATTACHMENT1_WEBGL     = 0x8CE1;
85     const GLenum COLOR_ATTACHMENT2_WEBGL     = 0x8CE2;
86     const GLenum COLOR_ATTACHMENT3_WEBGL     = 0x8CE3;
87     const GLenum COLOR_ATTACHMENT4_WEBGL     = 0x8CE4;
88     const GLenum COLOR_ATTACHMENT5_WEBGL     = 0x8CE5;
89     const GLenum COLOR_ATTACHMENT6_WEBGL     = 0x8CE6;
90     const GLenum COLOR_ATTACHMENT7_WEBGL     = 0x8CE7;
91     const GLenum COLOR_ATTACHMENT8_WEBGL     = 0x8CE8;
92     const GLenum COLOR_ATTACHMENT9_WEBGL     = 0x8CE9;
93     const GLenum COLOR_ATTACHMENT10_WEBGL    = 0x8CEA;
94     const GLenum COLOR_ATTACHMENT11_WEBGL    = 0x8CEB;
95     const GLenum COLOR_ATTACHMENT12_WEBGL    = 0x8CEC;
96     const GLenum COLOR_ATTACHMENT13_WEBGL    = 0x8CED;
97     const GLenum COLOR_ATTACHMENT14_WEBGL    = 0x8CEE;
98     const GLenum COLOR_ATTACHMENT15_WEBGL    = 0x8CEF;
99
100     const GLenum DRAW_BUFFER0_WEBGL          = 0x8825;
101     const GLenum DRAW_BUFFER1_WEBGL          = 0x8826;
102     const GLenum DRAW_BUFFER2_WEBGL          = 0x8827;
103     const GLenum DRAW_BUFFER3_WEBGL          = 0x8828;
104     const GLenum DRAW_BUFFER4_WEBGL          = 0x8829;
105     const GLenum DRAW_BUFFER5_WEBGL          = 0x882A;
106     const GLenum DRAW_BUFFER6_WEBGL          = 0x882B;
107     const GLenum DRAW_BUFFER7_WEBGL          = 0x882C;
108     const GLenum DRAW_BUFFER8_WEBGL          = 0x882D;
109     const GLenum DRAW_BUFFER9_WEBGL          = 0x882E;
110     const GLenum DRAW_BUFFER10_WEBGL         = 0x882F;
111     const GLenum DRAW_BUFFER11_WEBGL         = 0x8830;
112     const GLenum DRAW_BUFFER12_WEBGL         = 0x8831;
113     const GLenum DRAW_BUFFER13_WEBGL         = 0x8832;
114     const GLenum DRAW_BUFFER14_WEBGL         = 0x8833;
115     const GLenum DRAW_BUFFER15_WEBGL         = 0x8834;
116
117     const GLenum MAX_COLOR_ATTACHMENTS_WEBGL = 0x8CDF;
118     const GLenum MAX_DRAW_BUFFERS_WEBGL      = 0x8824;
119
120     void drawBuffersWEBGL(sequence&lt;GLenum&gt; buffers);
121 };
122   </idl>
123   <samplecode xml:space="preserve">
124     <pre>
125     #extension GL_EXT_draw_buffers : require
126     precision mediump float;
127     void main() {
128         gl_FragData[0] = vec4(1.0, 0.0, 0.0, 1.0);
129         gl_FragData[1] = vec4(0.0, 1.0, 0.0, 1.0);
130         gl_FragData[2] = vec4(0.0, 0.0, 1.0, 1.0);
131         gl_FragData[3] = vec4(1.0, 1.0, 1.0, 1.0);
132     }
133     </pre>
134   </samplecode>
135   <history>
136     <revision date="2012/10/16">
137       <change>Initial revision.</change>
138     </revision>
139     <revision date="2012/11/05">
140       <change>Corrected typo in drawBuffersWEBGL. Changed referenced spec version to 1.0 to fix broken link.</change>
141     </revision>
142     <revision date="2013/02/02">
143       <change>Renamed to EXT_draw_buffers per plan of OpenGL ES working group. Moved to draft status. Assigned number.</change>
144     </revision>
145     <revision date="2013/03/05">
146       <change>Renamed to WEBGL_draw_buffers per discussion on public_webgl list. Added guarantees to make it easier for developers to use the extension.</change>
147     </revision>
148     <revision date="2013/06/07">
149       <change>Clarified naming of shader directives.</change>
150     </revision>
151     <revision date="2014/07/15">
152       <change>Added NoInterfaceObject extended attribute.</change>
153     </revision>
154     <revision date="2014/08/08">
155       <change>Ratified by Khronos Board of Promoters.</change>
156     </revision>
157   </history>
158 </ratified>