W3C home > Mailing lists > Public > www-style@w3.org > October 2011

Re: [css-shaders] CSS shaders for custom filters (ACTION-3072)

From: Robert O'Callahan <robert@ocallahan.org>
Date: Thu, 6 Oct 2011 17:27:40 +1300
Message-ID: <CAOp6jLZMWeHsUe1jqh4hQ6475EQu_n9gg3nLuR_MmKbeR24byw@mail.gmail.com>
To: Chris Marrin <cmarrin@apple.com>
Cc: Gregg Tavares <gman@google.com>, Dean Jackson <dino@apple.com>, www-style@w3.org
On Thu, Oct 6, 2011 at 11:10 AM, Chris Marrin <cmarrin@apple.com> wrote:

> We do that by reverse mapping the mouse positions from global into local
> coordinates. That's easy with a single (or composite) transform. It's
> impossible for pixels that are altered by a vertex or fragment shader. You'd
> essentially have to run the shaders backwards to get them to tell you where
> a given point is in the local coordinate space. I know of no hardware that
> can do that. I haven't seen it anyway...
>

I think we can give up on having event handling account for the geometric
effects of fragment shaders. We should encourage authors to change geometry
using vertex shaders instead.

In principle, we can have event handling account for the effects of a vertex
shader. Once you've computed the transformed mesh, you can figure out which
point on the transformed mesh is topmost under the event position, and map
that point back to the pre-transform mesh.

This would be difficult to implement unless you can run the vertex shader on
the CPU (or you do some hairy CUDA/OpenCL implementation). However, there is
another very good reason to be able to run the vertex shader outside the
rendering pipeline: automatic calculation of filter bounds, so we can get
rid of that horrible filter-margin stuff. Vincent says that the meshes used
in the Adobe demos are usually not very large, so this may be feasible. (And
automatically lowering the mesh resolution if necessary is also feasible.)

This may mean that we should choose a different, simpler language for vertex
shaders than full WebGL vertex shaders.

Rob
-- 
"If we claim to be without sin, we deceive ourselves and the truth is not in
us. If we confess our sins, he is faithful and just and will forgive us our
sins and purify us from all unrighteousness. If we claim we have not sinned,
we make him out to be a liar and his word is not in us." [1 John 1:8-10]
Received on Thursday, 6 October 2011 04:28:07 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:45 GMT