- Notifications
You must be signed in to change notification settings - Fork0
andrewlowndes/perfect-antialiasing
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A new technique for rendering 3D triangles with 'perfect' anti-aliasing. Fonts and vectors are broken into triangles and rasterised conservatively then a fragment shader determines the triangle area coverage to compute the alpha for each fragment.
GPU Rendering of vector graphics at a sub-pixel accuracy:
- Triangulate curves into triangles
- Render each triangle using conservative rasterisation
- For each fragment:
- Perform a triangle/box intersection, creating a polygon
- Sum the areas of the triangles in the polygon
- Divide the sum by the fragment area to give a percentage coverage
- Continue for all triangles, additively blending
Visithttps://andrewlowndes.github.io/perfect-antialiasing/dist/ to see a set of demos showing the various techniques used in this repo.
- Ensure NodeJS installed
- Run
npm i
to install dependencies - Run
npm start
to open the demos in a web app
- CPU Demo (Canvas)
- Cubic/quadratic bezier tesselation
- Triangulate path to polygons
- Conservative rasterisation
- SVG test
- Cell logic
- Custom font rendering
- WebGL
- Conservative rasterisation (vertex-shader based shifting)
- Custom font rendering
- 3D Triangle
- 3D scene
- Screen-space tesselation
- Instancing
- Performance test
- Vulkan
- Screen-space tesselation via geometry shader
- Conservative rasterisation using gpu extensions
- Instancing
- Performance test
- Further experiments
- Exact curve coverage analytics
- Quadratic Bezier
- Cubic Bezier (prob too complicated)
- Exact curve coverage analytics
- Anti-aliasing in games (need to assess overhead of conservative rasterisation and the alpha computation in the fragment shader)
- Font rendering (still relies on triangulation - use screen-space in tesselation shader for resolution independent rendering)
Install VS Code and the following extensions:
- EditorConfig for VS Code
- ESLint
- Prettier
Vertex-based conservative rasterisation based off algorithm 2 from GPU Gems 2 Chapter 43 (https://developer.nvidia.com/gpugems/gpugems2/part-v-image-oriented-computing/chapter-42-conservative-rasterization)
About
Antialiasing via conservative rasterisation and analytical area computation
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.