Giter Club home page Giter Club logo

webgl's Introduction

The Official Khronos WebGL Repository

This is the official home of the Khronos WebGL repository for the WebGL specifications and the WebGL conformance test suite.

Before adding a new test or editing an existing test please read these guidelines.

You can find live versions of the specifications at https://www.khronos.org/webgl/

The newest work in progress WebGL conformance test suite for the next version of the spec can be accessed at. https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html

Official live versions of the conformance test suite can be found at https://www.khronos.org/registry/webgl/conformance-suites/

The WebGL Wiki can be found here https://www.khronos.org/webgl/wiki/

This repository is licensed under the MIT license and all contributions are covered under the MIT CLA.

Cloning this repository

When cloning this repository please pass the --recursive flag to git:

git clone --recursive [URL]

This will properly install the WebGLDeveloperTools repository as a git submodule under sdk/devtools/.

The last edited date in several specifications is automatically updated via a smudge filter. To benefit from this you must issue the following commands in the root of your clone.

On Unix (Linux, Mac OS X, etc.) platforms and Windows using Git for Windows' Git Bash or Cygwin's bash terminal:

./install-gitconfig.sh
rm specs/latest/*/index.html
git checkout !$

On Windows with the Command Prompt (requires git.exe in a directory on your %PATH%):

install-gitconfig.bat
del specs/latest/1.0/index.html specs/latest/2.0/index.html 
git checkout specs/latest/1.0/index.html specs/latest/2.0/index.html 

The first command adds an [include] of the repo's .gitconfig to the local git config file.git/config in your clone of the repo. .gitconfig contains the config of the "dater" filter. The remaining commands force a new checkout of the index.html files to smudge them with the date. These two are unnecessary if you plan to edit these files. All are unecessary if you do not care about having the dates shown.

webgl's People

Contributors

bjacob avatar greggman avatar grorg avatar gyagp avatar jasomobica avatar jchen10 avatar jdarpinian avatar jiangyizhou avatar jiawei-shao avatar kainino0x avatar kangz avatar kdashg avatar kenrussell avatar kygx-legend avatar lexaknyazev avatar null77 avatar nvmatthewn avatar oletus avatar pyalot avatar qkmiao avatar rafaelcintron avatar renchenglei avatar richard-yunchao avatar shrekshao avatar sugoi1 avatar tiborshub avatar toji avatar xhcao avatar xidachen avatar zhenyao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webgl's Issues

Large File Memory Difficulties

First, let me say, I am not sure of the proper place to post this issue. I tried recently to load a very large json file that details the world in which I wanted to view. The file is about 148 Megabyte. I have 16 GB of RAM and use on average about 16-25% of the memory tops. Therefore, I know this is not a memory issue on my computer. I have loaded the file locally so I know that it is not a network issue either. However, when I try to load and display the world, Chrome just crashes every single time. I was using Three.js as the platform for loading, so it may be a Three.js issue also / instead. I searched for help and it seems that various people are having difficulties loading large json files and displaying them as a world, despite the WebGL platform they are using. Any help or known fixes would be appreciated.

Add or update per-file licenses

The WebGL repository is now being pulled wholesale into the Chromium repository for testing purposes. Chromium requires that all third-party files pass the Linux licensecheck utility. Currently many files in the WebGL repository fail this check, either because of missing or unrecognized per-file licenses.

A separate bug regarding the html5lib library has been filed at html5lib/html5lib-python#125 . The complete list of files failing licensecheck follows. Ideally all of these files will be fixed.

'third_party/webgl/src/sdk/demos/google/san-angeles/gles/bob/compare.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/t/build.sh' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/t/include/GLES/egltypes.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/t/include/GLES/egl.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/t/include/GLES/gl.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/t/app-linux.c' has non-whitelisted license 'MIT/X11 (BSD like) LGPL (v2.1 or later)'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/build.sh' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/include/GLES/egltypes.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/include/GLES/egl.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/include/GLES/gl.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/gles/app-linux.c' has non-whitelisted license 'MIT/X11 (BSD like) LGPL (v2.1 or later)'
'third_party/webgl/src/sdk/demos/google/san-angeles/glut/app-glut.c' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/glut/build.sh' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/glut/include/GLES/egltypes.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/glut/include/GLES/egl.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/glut/include/GLES/gl.h' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/sdk/demos/google/san-angeles/glut/app-linux.c' has non-whitelisted license 'MIT/X11 (BSD like) LGPL (v2.1 or later)'
'third_party/webgl/src/sdk/demos/google/nvidia-vertex-buffer-object/VertexBufferObject2.java' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/specs/1.0/extract-idl.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/specs/latest/1.0/extract-idl.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/specs/latest/2.0/extract-idl.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/specs/1.0.2/extract-idl.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/index.php' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/inputstream.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/html5parser.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/pulldom.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/etree.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/lxmletree.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/init.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/soup.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/dom.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/_base.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/simpletree.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treewalkers/genshistream.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/sanitizer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/ihatexml.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/inject_meta_charset.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/lint.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/sanitizer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/optionaltags.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/_base.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/whitespace.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/filters/formfiller.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/etree.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/etree_lxml.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/init.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/soup.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/dom.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/_base.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/treebuilders/simpletree.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/utils.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_stream.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/runparsertests.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_treewalkers.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/tokenizertotree.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_sanitizer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_serializer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_whitespace_filter.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/init.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_encoding.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_formfiller.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/support.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_tokenizer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/test_parser.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/performance/concatenation.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/runtests.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tests/mockParser.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/serializer/htmlserializer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/serializer/xhtmlserializer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/serializer/init.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/init.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/constants.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/resources/html5lib/src/html5lib/tokenizer.py' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/extensions/atom.xsl' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/extensions/schematron/iso_dsdl_include.xsl' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/extensions/schematron/webgl_message_patch.xsl' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/extensions/schematron/iso_svrl_for_xslt1.xsl' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/extensions/standards.xsl' has non-whitelisted license 'UNKNOWN'
'third_party/webgl/src/extensions/rev_utils.xsl' has non-whitelisted license 'UNKNOWN'

More tests for set() needed in Typed Array tests

Stephen Adams from Google has pointed out that the tests for typed arrays' set() methods are insufficient. In particular, the tests must verify the case where set() is called with a different type of typed array view than the receiver's, due to how Web IDL's overloads work. (The original intent was that one could only pass a Float32Array to Float32Array.set, but it was discovered some time ago that a different view type like Uint8Array will match the overload taking "type[]".)

oes-element-index-uint test (+ dynamic_draw)

Hi,

Not sure that I'm on right place... but still.
When using the extension oes-element-index-uint and when the index buffer is set with DYNAMIC_DRAW, sometimes the oes-element-index-uint test doesn't pass.

I discover this problem when I was developing my app:

When the test doesn't pass, refreshing the page fix it everytime...
What are the conditions to trigger the fail? hmm.. good question, I usually open a new tab and load the same page and eventually one will fail (sometimes a lot of consecutive tab works, and sometimes they fail..).
But it usually often fails when restarting chrome and loading the page.

drawElements trigger this error :

WebGLRenderingContext: GL ERROR :GL_OUT_OF_MEMORY : glFramebufferTexture2D: <- error from previous GL command 
WebGLRenderingContext: GL ERROR :GL_OUT_OF_MEMORY : glTexImage2D: <- error from previous GL command 

ps: It always works (so far for me) when using STATIC for the index buffer
ps2 : firefox aurora support oes-element-index-uint and the problem also appears
ps3: Tested on Windows 7, my graphic card: ATI Mobility Radeon HD 5650, I didn't test it yet on another computer... so maybe it's specific to my computer...

Possibility of not writing gl_Position is not addressed by WebGL spec, plus conformance test error related to this

GLSL ES spec 1.0.17 section 10.13 says that not writing gl_Position results in undefined behavior, which is undesirable in WebGL. Current WebGL implementations do seem to enforce statically writing to gl_Position, but it's not mentioned in the WebGL spec.

There's also a related problem in the conformance test glsl/literals/float_literal.vert.html, where vertex shader does not write gl_Position. I think writing to gl_Position should simply be added there.

A new test could also be written that specifically checks that not writing to gl_Position in a vertex shader will result in a shader compilation error.

make fails in extensions directory with new version of xsltproc

I recently upgraded to OS X Mavericks, and "make" fails in the extensions directory.

The error is:
./validate EXT_color_buffer_half_float
xsltproc --stringparam basepath echo EXT_color_buffer_half_float/ | sed -e "s/[^\/]*/../g"
extension.xsl EXT_color_buffer_half_float/extension.xml > EXT_color_buffer_half_float/index.html
compilation error: file extension.xsl line 56 element attribute
xsl:attribute: The attribute name 'xmlns' is not allowed.
make: *** [EXT_color_buffer_half_float/index.html] Error 5

I believe the problem is that we're using an HTML doctype (), but attempting to to set an xml namespace for XHTML.

We should probably pick one? HTML with no xml namespace, or use an XHTML namespace.

Here's my version of xsltproc (output from "xsltproc --version"):
Using libxml 20900, libxslt 10128 and libexslt 817
xsltproc was compiled against libxml 20900, libxslt 10128 and libexslt 817
libxslt 10128 was compiled against libxml 20900
libexslt 817 was compiled against libxml 20900

Add test for comma separated var declarations

It was reported on the public mailing list that an
implementation was failing with GLSL code such as this:

uniform float x, y;

We should add a test that explicitly exercises this.

Test: bindAttribute called before translation/compilation

The GL spec says "glBindAttribLocation can be called before any vertex shader objects are bound to the specified program object. It is also permissible to bind a generic attribute index to an attribute variable name that is never used in a vertex shader."

This should be exercised in the test suite, since all (?) WebGL implementations implement a variable name translation via ANGLE when compiling shaders. This issue was discovered when running some Unity examples in WebKit.

The test would have to call bindAttribLocation on a number of attributes before the compilation step.

WebGL2: mapBufferRange alternative

Propose API for mapBufferRange equivalent -> getBufferSubData

Note there are a bunch of enums exposed by mapBufferRange that will need updating too (if only to remove the comment)

DataView constructor can be called without using "new"

The conformance test typedarrays/data-view-test.html
explicitly checks to see if
var v = DataView(new ArrayBuffer);
throws an exception.

This used to be the correct behaviour, but it has since changed. The ECMAScript 6 Draft Specification allows DataView to be used as a function returning a constructed DataView object.

http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

I'll submit a pull request to change the test in ToT, but we still need to do something about the 1.0.2 test suite. WebKit currently fails the test even though it is doing the right thing. But Chromium is passing the test, so updating it will cause breakage there.

My suggestion is to remove just this part of the test for 1.0.2, but leave in the updated part for ToT.

gl-disabled-vertex-attrib.html too strict

The gl-disabled-vertex-attrib.html conformance test incorrectly assumes that vertex output varyings remain exactly the same when passed to the fragment shader. This is not guaranteed, due to perspective correction.

Most implementations still pass the test because their implementation of the reciprocal operation used for perspective correction is exact (infinite precision) for 1.0. Some implementations don't make that guarantee, and the spec appears to allow for such finite precision for any input. This test could fail on any implementation by moving the quad that is being rendered back or forth.

This test should not depend on the perspective correction implementation. I believe it can be fixed by moving the isCorrectColor test from the fragment shader into the vertex shader.

https://www.khronos.org/registry/webgl/sdk/demos/webkit/TeapotPerPixel.html uses invalid shaders

ESSL 1.00.17 states:
"Shared globals are variables that can be accessed by multiple compilation units. In GLSL ES the only
shared globals are uniforms. Varyings are not considered to be shared globals since they must pass
through the rasterization stage before they can be read by the fragment shader."
"Shared globals must have the same name, storage and precision qualifiers."

The TeapotPerPixel demo breaks this rule since it shares uniforms between the vertex and fragment shader, but uses the default precision (highp) in the vertex shader and mediump in the fragment shader.

(It possibly works on many (desktop) implementations since the precision qualifiers may just be ignored there.)

check varyings match uniforms?

I recently ran into an issue where in the vertex shader I had this

// -- vertex shader --
...
attribute vec4 color;
varying vec4 v_color
void main() {
  v_color = color;
  ...
}

// -- fragment shader --
...
uniform vec4 v_color
void main() {
  gl_FragColor = v_color;
}

I got no error. The error is in the vertex shader I used 'varying" but in the fragment shader I used "uniform". It's not clear to me if this should generate an error or not.

Upstream unused uniform fixes to ES 3.0 suite, make harness stricter

In #340 the WebGL conformance suite harness for running the imported ES 3.0 tests was relaxed to be identically as strict as ES 3.0's GTF harness, because of problems with unreferenced uniforms being optimized away by some GLSL compilers. This was an expedient workaround for allowing the WebGL 1.0.2 conformance suite to be passed.

A better fix would be to fix the tests and make the ES 3.0 conformance suite harness stricter, requiring that all referenced uniforms be present. At that point the WebGL harness should me made stricter as well.

This is a follow-on to Issue 236.

Update OESVertexArrayObject.js to handle deleted buffers issue

sdk/demos/google/resources/OESVertexArrayObject.js is an attempt to emulate the OES_vertex_array_object extension 100% in JavaScript.

One thing that's missing is that it must not let buffers actually get deleted unless they are no longer referenced by any vertex array objects.

Syntax errors in some extra tests

Improve test-runner to support generating conformance test results

Currently the test-runner is designed mainly for GPU vendors to test their drivers. However, it would be great to enhance it to generate WebGL conformance suite submissions for browser vendors.

The following changes would need to be made in order to do this:

  • Add an optional command line argument to re-enable the GPU driver bug workarounds the browser may have. (The default must continue to be to disable these workarounds.)
  • The harness would need to gather OS, GPU and graphics driver version information and add them to the results.

Add tests for DEPTH_STENCIL renderbuffer allocated and attached in different orders

Looking at sdk/tests/conformance/renderbuffers/framebuffer-object-attachment.html , it seems tests are needed for the following situations:

  1. allocating a DEPTH_STENCIL renderbuffer with renderbufferStorage, and then attaching it to a framebuffer
  2. attaching a renderbuffer to a framebuffer's DEPTH_STENCIL attachment, and then allocating it with renderbufferStorage

On platforms not supporting OES_packed_depth_stencil, an implementation emulating the DEPTH_STENCIL attachment point with two separate renderbuffers may well get case (2) wrong. A rendering test is needed ensuring that the depth and stencil buffers are working properly for these two cases.

Incorrect WebIDL syntax for WebGL2RenderingContextBase

http://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7 says:

[NoInterfaceObject]
interface WebGL2RenderingContextBase implements WebGLRenderingContextBase
{
...
}

WebIDL does not have this notion of implements. It is not clear what the intent is but you probably meant something along the lines of

interface WebGL2RenderingContextBase {
  ...
}
WebGL2RenderingContextBase implements WebGLRenderingContextBase;

which means that all the members from WebGLRenderingContextBase are also members of WebGL2RenderingContextBase.

Most tests don't query attribute locations before binding

The majority of tests assume that the attribute locations are in the same order as defined by the shader source. I recently enabled symbol mangling in WebKit, and have noticed that (rarely) the indexes are not in the same order.

We should probably update the tests, since order is not guaranteed, although I expect to see some broken content in WebKit due to this. I'm not sure how to best address this.

Need to spec that WebGLContextEvent is cancelable

In his work on supporting lost contexts for 2D Canvas, Justin Novosad pointed out that the WebGL spec isn't clear that WebGLContextEvent initializes the cancelable flag to true upon creation. Event.preventDefault() just sets the canceled flag, and that can only be done if the event is cancelable, so this is worth clarifying.

He also pointed out that the 'webglcontextrestored' event is unnecessarily cancelable in Chrome's implementation, but I'm not sure this matters one way or the other since there's no default behavior, unlike the 'webglcontextlost' event. Both should probably be cancelable, just by virtue of WebGLContextEvent being cancelable.

Request

I would like to join in this group, may you add me?

Write more viewport and scissor tests

I need to write more scissor and viewport tests.

Specifically,

  • that neither scissor nor viewport change when anything about the current
    framebuffer changes in including adding/removeing attachments, deleting
    attachments, changing the size of attachments, changing which fbo
    is bound. Some of these tests exist.
  • that scissor can be anything that is not a negative width or negative height.
    In other words
scissor(-100000, -20000, 300000, 400000)

is valid

  • That viewport can be set larger than the current backbuffer / fbo and that larger
    setting correctly effects rendering.

missing vertices after a few seconds

WebGL is removing verticies after afew seconds of rendering.

On my computer, It starts out fine, like the first image below, but within a few seconds, becomes the mess in the second part of that image.

you can see that it works in your browser here

I've tried clearing my history, cache, cookies, anything I can think of. I've even switched Firefox from Chrome. nothing seems to work.

I have an ATI Radeon™ HD 3400 Series graphics card, and I'm on Windows 7 using up to date chrome. Any idea of what the issue could be?

before and after some glitch happens in ThreeJS,

Add conformance test for GLSL compiler bug on Adreno GPUs

Recently a bug was reported by the three.js and Verold.com developers affecting Qualcomm's Adreno GPUs. Computation of fog using an expression involving gl_FragCoord.z and gl_FragCoord.w causes incorrect compilation of the fragment shader and incorrect rendering.

A WebGL conformance test should be added for this, despite the fact that this will prevent the conformance suite from passing on Qualcomm GPUs. It can be added after the 1.0.3 conformance suite is snapshotted.

Need to test that extensions are lost on context lost

This probably needs some spec updates to make it clear what happens. The simple version is all extensions except WEBGL_lose_context need to be explicitly re-enabled after a context is lost/restored.

So for example

ext1 = gl.getExtension("OES_vertex_array_object");
... // context lost, context restored
ext1.bindVertexArrayOES();  // is supposed to be a no-op 
                            // even though the context is restored.

According to the spec

ext1 = gl.getExtension("OES_vertex_array_object");

Should return the same object which probably means implementation-wise each extension needs to track context lost itself

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.