[whatwg] Adding features needed for WebGL to ImageBitmap
Ian Hickson
ian at hixie.ch
Wed Jul 10 15:17:00 PDT 2013
On Wed, 19 Jun 2013, Gregg Tavares wrote:
>
> In order for ImageBitmap to be useful for WebGL we need more options
ImageBitmap is trying to just be a generic HTMLImageElement, that is, a
bitmap image. It's not trying to be anything more than that.
Based on some of these questions, though, maybe you mean ImageData?
> premultipliedAlpha: true/false (default true)
> Nearly all GL games use non-premultipiled alpha textures. So all those
> games people want to port to WebGL will require non-premultipied textures.
> Often in games the alpha might not even be used for alpha but rather for
> glow maps or specular maps or the other kinds of data.
How do you do this with <img> today?
> flipY: true/false (default false)
> Nearly all 3D modeling apps expect the bottom left pixel to be the first
> pixel in a texture so many 3D engines flip the textures on load. WebGL
> provides this option but it takes time and memory to flip a large image
> therefore it would be nice if that flip happened before the callback
> from ImageBitmap
No pixel is the first pixel in an ImageBitmap. I don't really understand
what this means.
> colorspaceConversion: true/false (default true)
> Some browsers apply color space conversion to match monitor settings.
> That's fine for images with color but WebGL apps often load heightmaps,
> normalmaps, lightmaps, global illumination maps and many other kinds of
> data through images. If the browser applies a colorspace conversion the
> data is not longer suitable for it's intended purpose therefore many WebGL
> apps turn off color conversions. As it is now, when an image is uploaded to
> WebGL, if colorspace conversion is
> off<http://www.khronos.org/registry/webgl/specs/latest/#PIXEL_STORAGE_PARAMETERS>,
> WebGL has to synchronously re-decode the image. It would be nice if
> ImageBitmap could handle this case so it can decode the image without
> applying any colorspace manipulations.
ImageBitmap doesn't apply any colour space manipulation. That's only done
when drawing, according to the spec.
On Wed, 19 Jun 2013, Gregg Tavares wrote:
>
> colorspaceConversion: true = browser does whatever it thinks is best for
> color images.
> colorspaceConversion: false = give me the bits in the image file. Don't
> manipulate them with either embedded color data or local machine gamma
> corrections or anything else.
This seems like something that should apply when _using_ the image, not in
the API that just represents the raw image data.
We could provide a way to say "strip color space information from any
images loaded this way", but I don't understand why you'd include color
space information that was wrong in the first place.
> c = document.createElement("canvas");
> ctx = c.getContext("2d");
> i = ctx.getImageData(0, 0, 1, 1);
> i.data[0] = 255;
> ctx.putImageData(i, 0, 0);
> i2 = ctx.getImageData(0, 0, 1, 1);
> console.log(i2.data[0]) // prints 0 on both FF and Chrome
This is using ImageData, not ImageBitmap. Are we talking about the same
thing here? I'm confused.
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list