- From: Johannes Behr <johannes.behr@igd.fraunhofer.de>
- Date: Fri, 4 Nov 2011 09:45:06 -0700
- To: Vincent Hardy <vhardy@adobe.com>
- Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, "Robert O'Callahan" <robert@ocallahan.org>, Dean Jackson <dino@apple.com>, Chris Lilley <chris@w3.org>, Patrick Dengler <patd@microsoft.com>, Dirk Schulze <vbs85@gmx.de>, "public-fx@w3.org" <public-fx@w3.org>
Hi, > From: "Tab Atkins Jr." <jackalmage@gmail.com> > Date: Fri, 4 Nov 2011 00:43:39 -0700 > To: Robert O'Callahan <robert@ocallahan.org> > Cc: Dean Jackson <dino@apple.com>, Chris Lilley <chris@w3.org>, Adobe Systems <vhardy@adobe.com>, Patrick Dengler <patd@microsoft.com>, Dirk Schulze <vbs85@gmx.de>, "public-fx@w3.org" <public-fx@w3.org> > Subject: Re: Merging CSS Shaders proposal into Filter Effects > >> On Fri, Nov 4, 2011 at 12:27 AM, Robert O'Callahan <robert@ocallahan.org> wrote: >>> One crazy idea I just had to implement event coordinate transformation: >>> create a 256x256 texture, set each pixel's R value to the X coordinate and G >>> value to the Y coordinate, apply the vertex shader with an identity fragment >>> shader, and save the result. To transform an event coordinate, extract from >>> the result the color value at the pixel you care about, and recover the >>> original X and Y values from the R and G channels. >> >> That's not so crazy. I think Greg Tavares had the same idea. > > This was discussed during yesterday's FX F2F and Johannes Behr talked about approaches with picking shaders that use the R/G/B channels to store picking information. He showed a demo during the break. From your and Johannes' description, it seems to be similar. I have cced Johannes so that he can comment. I have an action to further research this and add a proposal to the spec. Right. But you do not even need a 256x256 texture. You can write the interpolated texture-coordinate as color in your fragment shader. The method is revert do "Picking Buffer Test" and very common in 3D graphics environments. http://www.opengl.org/resources/faq/technical/selection.htm It's usually used to determine the 3D coordinate and/or ID of the picked 3D object but in this case it would be the original UV coordinates. There are different ways to implement this. With a second path or a single path with multiple render targets (even with FBOs). There are various optimizations (e.g. with stencil buffers) but the basic idea is the same. Render the full object with the extra information and look ab the 2D pixel position afterwards. best regards johannes > > Vincent -- Dr. Johannes Behr Abteilungsleiter Visual Computing System Technologies Fraunhofer-Institut für Graphische Datenverarbeitung IGD Fraunhoferstr. 5 | 64283 Darmstadt | Germany Tel +49 6151 155-510 | Fax +49 6151 155-196 johannes.behr@igd.fraunhofer.de | www.igd.fraunhofer.de
Received on Friday, 4 November 2011 16:50:34 UTC