[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] plugging floating point holes



On Fri, Aug 7, 2015 at 11:18 PM, Mark Callow <khronos@callow.im> wrote:
Specification-wise the only wrinkle is that WEBGL_color_buffer_float can’t be used to expose float32 rendering on OpenGL ES 3 devices supporting the native EXT_color_buffer_float, because the former requires that blending of float32 colors be supported and the latter requires they not be.  This is a problem because, when I asked within Khronos, only 2 vendors said they could support float32 blending on their OpenGL ES 3.x parts.

I apologize for this wrinkle. When I wrote WEBGL_color_buffer_float my purpose was to provide a way for implementations to expose float32 rendering when running on desktop OpenGL. I, wrongly as it turns out, expected future OpenGL ES implementations to have the same float32 capabilities.

I see  3 ways to fix this:
  1. Change WEBGL_color_buffer_float to remove support for float32 blending.
  2. Change WEBGL_color_buffer_float to add a flag that indicates if float32 blending is supported
  3. Create a new extension, e.g, (horribly long name) WEBGL_color_buffer_float_no_blend
  4. Modify the WebGL version of EXT_color_buffer_float so that it can be applied to WebGL 1 implementations. I have not looked to see how much work this might be or what damage it might to the understandability of the extension.

1 and 2 are not acceptable by this groups processes as the spec. is already approved.

There is a EXT_float_blend extension in proposals which can be used by WebGL 2 implementations to expose float32 blending and could also be used by WebGL 1 implementations if we choose #1 above. I’d like to propose moving that extension to Drafts so WebGL 2 implementations on desktop can start exposing it.

I don't think there's anything to be done about the blending situation in terms of specification (it's fully specified in the context that it applies by the existing set of extensions, although it does require the color_buffer_float/half_float extensions for WebGL1 to only work if blending also works). I would be in favor of moving EXT_float_blend to draft.