Jump to content
  • Advertisement
Sign in to follow this  
Tangletail

Anyone understand what Nvidia means here?

This topic is 615 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm working on implementing vector drawing as part of a flash interpretor for fun project. And I ran into an issue where I have absolutely no freakin clue what Nvidia meant here.

In their process, they say they they "bake" the path into a resolution independent representation. Their reasoning for this is so that it can undergo arbitrary projective transformations.

 

Correct me if I am wrong... but aren't all forms of mathmatical representations independent of pixel resolution? I can't imagine you being able to normalize a vector, and have it be correctly displayed at all resolutions.

It seems like they just skipped a detail here and automatically assumed the reader knew what sort of black magic happened behind the scenes.

Edited by Tangletail

Share this post


Link to post
Share on other sites
Advertisement

Without seeing the context, to me it sounds like they're just not rasterizing the path spline before storing it. Not stepping along it and evaluating it at intervals to get pixels. It's possible by "bake" they mean to imply they are partially-evaluating it, doing things now to avoid computation later, but not enough that they actual end up with resolution-dependent storage. But probably they just mean "bake" as another word for "save" here.

Share this post


Link to post
Share on other sites

By partial evaluation, what exactly do you mean? Do you mean do some precomputing to figure out the weights and transformations for the cubic curves ahead of time?

 

Yes. Do any math you can do beforehand as long as that math doesn't result in committing to pixel resolutions.

 

I'll read the paper when I have a chance and see if that makes it any clearer. 

Share this post


Link to post
Share on other sites

It's no rush. I'm able to understand what most of the paper is doing. It's just that one little tiny bit that's basically a black whole that's sinking the ship.

Share this post


Link to post
Share on other sites

I believe they've explained it pretty clearly.

Section "3.2.2 Baked Form of Filled Paths" reads:

Once baked, a filled path is reduced to five sets of primitives:

 

1. Polygonal anchor geometry (structured as triangle fans), rendered with no shader.

2. Quadratic discard triangles, rendered with a Loop-Blinn quadratic discard shader.

3. Cubic discard triangles (if the cubic Bezier hull is a triangle) ´ and quadrilaterals, rendered with a Loop-Blinn cubic discard shader.

4. Arc discard triangles, rendered with the roundCoverage discard shader shown above.

5. Conservative covering geometry, typically a triangle fan or quadrilateral.

 

 

I.e. they build geometry that later will be rendered using different shaders.

That's not exactly the input 'path', so it's processed, baked. And because it is polygonal it's actually resolution independent.

Share this post


Link to post
Share on other sites

I believe they've explained it pretty clearly.

Section "3.2.2 Baked Form of Filled Paths" reads:

Once baked, a filled path is reduced to five sets of primitives:

 

1. Polygonal anchor geometry (structured as triangle fans), rendered with no shader.

2. Quadratic discard triangles, rendered with a Loop-Blinn quadratic discard shader.

3. Cubic discard triangles (if the cubic Bezier hull is a triangle) ´ and quadrilaterals, rendered with a Loop-Blinn cubic discard shader.

4. Arc discard triangles, rendered with the roundCoverage discard shader shown above.

5. Conservative covering geometry, typically a triangle fan or quadrilateral.

 

 

I.e. they build geometry that later will be rendered using different shaders.

That's not exactly the input 'path', so it's processed, baked. And because it is polygonal it's actually resolution independent.

 

The keyword here is "Baked' Which is not explained clearly in the paper, or any references I've read so far. I've already read the entire paper, and understand most of it.

They do a two pass process using Loop and Blinn's technique combined with a Winding order toggle to create a stencil buffer, and then create a convex volume to paint the area covered by the stencil buffer.

What I want to know, is what they mean about "Baking" the paths.

EDIT: Misread that. actually. I think I see now.

I think my confusion is in the wording they used here.

I'm reading "Once Baked, a filled path is reduced to these primitives" as It is first baked, then reduced into those primitives on the GPU. Not a baked path is this.

Which honestly, the meaning of that sentence could go in either direction. I'm starting to see why we're forced to take technical writing in college now.

 

Post twice so I can undo the previous -1 and give you a +1. That actually seemed to have been the problem.

Edited by Tangletail

Share this post


Link to post
Share on other sites

The keyword here is "Baked' Which is not explained clearly in the paper, or any references I've read so far. I've already read the entire paper, and understand most of it.


The quoted bit does explain it, though. "Baking" generally just refers to converting content from a source form to some kind of intermediate or runtime form.

The list given in the quote is the intermediate form that the source commands are baked into.

Take the fifth item for instance: "Conservative covering geometry, typically a triangle fan or quadrilateral." Converting paths to geometry is a significant portion of path rendering. Converting paths to non-conservative geometry would result in a resolution-dependent format. A conservative representation means that the generated geometry completely encompasses the input path, and can be used directly as input to the vertex processing and rasterization pipelines when combined with an appropriate shader that evaluates the path primitives.

The paper goes into further detail explaining how those steps are used and why they work.

TL;DR: NVIDIA _bakes_ paths into an intermediate form that is faster to evaluate but still transformable.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!