mechazoidal + rendering   64

Real-Time Rendering · GPUs prefer premultiplication
"The short version: if you want your renderer to properly handle textures with alphas when using bilinear interpolation or mipmapping, you need to premultiply your PNG color data by their (unassociated) alphas."
"We seem to rediscover this every few years"
Graphics  rendering  shaders  piperesearch 
4 weeks ago by mechazoidal
Implementation matters: PS2 weirdness and Path Two Rendering - GovanifY
"This was a pretty amazing piece to tackle as it’s basically the polar opposite of the other competing platforms back in the day. A lot of non-sequential parallel cores doing calculations, very little cache and fricking insane bandwidth. It really shows how much a different system can matter in the devlopment world!"
psx  rendering  graphics  reference 
11 weeks ago by mechazoidal
Headless Vulkan examples - Sascha Willems
2017 so a bit old, but demonstrates a headless renderer
vulkan  piperesearch  rendering  2017  gpu 
may 2019 by mechazoidal
Optimizing tile-based light culling – Wicked Engine Net
A lot has been covered, so let’s recap quickly:

- Frustum-sphere tests are inaccurate
- Refine with AABB-sphere tests
- Work against depth discontinuities with 2.5D culling bitmasks
- Small burden on culling can be big win with shading
- Approximate complex light types with spheres and AABBs
- Avoid overworked ubershaders
- Prefer smaller shaders, better fitted to specific task at hand
shaders  rendering  gamedev  piperesearch 
may 2019 by mechazoidal
I Am Graphics And So Can You :: Part 4.5 :: idTech — Faster Than Life
Note how the renderer is split into a frontend/backend, with a simplified rendering model on top, and specializing into vulkan/OpenGL/d3d calls at the lower level.
vulkan  gamedev  piperesearch  rendering 
may 2019 by mechazoidal
Steve Karolewics - Anti-ghosting with Temporal Anti-Aliasing
"We decided that temporal anti-aliasing (TAA) would be the best solution to solve these aliasing issues, and Lumberyard already supports TAA. Unfortunately, we encountered a lot of ghosting as a result of using TAA with a fast moving camera. Ghosting occurs when portions of a moving object across multiple frames combine incorrectly to give the appearance of a second copy of the object. Through a combination of new techniques that we developed for The Grand Tour Game and previous advances by other studios and researchers, we were able to eliminate most ghosting without sacrificing performance."
rendering  shaders  gamedev  cars 
april 2019 by mechazoidal
The Hacks of Life: Keeping the Blue Side Up: Coordinate Conventions for OpenGL, Metal and Vulkan
"OpenGL, Metal and Vulkan all have different ideas about which way is up - that is, where the origin is located and which way the Y axis goes for a framebuffer. This post explains the API differences and suggests a few ways to cope with them. I'm not going to cover the Z axis or Z-buffer here - perhaps that'll be a separate post."
reference  opengl  vulkan  graphics  rendering  2019  piperesearch 
april 2019 by mechazoidal
A Surface Standard
An uber-shader for doing "all" materials, taking up where Arnold's standard shader leaves of. It's based on the bidirectional scattering distribution function and uses 10 closures for all physical aspects. They also provide a stripped-down compatibility version for real-time/game use. Provided in Open Shading Language form.
Note that this is a living document and my be updated at any time (last check: 2019/03)
shaders  graphics  autodesk  piperesearch  rendering  math  osl 
march 2019 by mechazoidal
Log-spherical Mapping in SDF Raymarching
"Although these types of geometries have been known and renderable for a long time, I believe the techniques described here offer much unexplored creative potential, since they allow the creation of raymarchable SDFs of self-similar geometries with an infinite level of visual recursion, which can be explored in realtime on the average current-gen graphics card. "
(the math is heavy, but it looks cool)
shaders  sdf  rendering  graphics 
march 2019 by mechazoidal
GitHub - behdad/glyphy: GLyphy is a signed-distance-field (SDF) text renderer using OpenGL ES2 shading language.
From the harfbuzz author:
"The main difference between GLyphy and other SDF-based OpenGL renderers is that most other projects sample the SDF into a texture. This has all the usual problems that sampling has. Ie. it distorts the outline and is low quality.

GLyphy instead represents the SDF using actual vectors submitted to the GPU. This results in very high quality rendering, though at a much higher runtime cost."

http://vimeo.com/behdad/glyphy
opengl  rendering  fonts  sdf  library  repo:github 
march 2019 by mechazoidal
Complexity Reduction of Catmull-Clark/Loop Subdivision Surfaces
the core use of subdiv in Verse/LOVE
"The largest shortcoming of this
algorithm is that flat areas with curved edges tend to be
over tessellated. This is something we intend to combat
by having a separate set of look up tables for flat
polygons. Another potential problem is that the
algorithm can never reduce the mesh below its control
mesh polygon count. Still it produces very good results
especially with architectural objecs. The biggest
features with this algorithm is of course that it is fast,
contains no iterative searching and that all data can be
stored in arrays since there are no insert/delete
operations, something that 3D hardware APIs such as
OpenGL like. The biggest problem is that the algorithm
is so large and contains so many steps that it becomes
very hard to implement and debug. In the future we
would like to try to instead of generating a look-up
table generate compliable code that would contain the
tessellation information to see if there is a possible
speed gain. "
archive_it  paper  pdf  piperesearch  graphics  2001  rendering 
february 2019 by mechazoidal
GitHub - RazrFalcon/resvg: An SVG rendering library.
A pure Rust library for rendering SVG(aiming for a static SVG Full 1.1 subset). Unlike librsvg it is not tied to any other os dependencies. It does not attempt to cover any animations.
svg  rendering  library  rust  repo:github 
january 2019 by mechazoidal
Rational rendering and floating bar :: Inigo Quilez :: fractals, computer graphics, mathematics, demoscene and more
"After this exercise I ended up believing that there's perhaps room for a number representation that is based on rational numbers similar to what I am now calling "floating bar", a representation that is compatible with integers and can do many operations in exact arithmetic for many problems (provided the input is rational). The 64 bit version (1|6|57) can go a long way, although the 32 bit version (1|5|26) can already produce some interesting renderings.

Overall, this was a fun exploration. There were a few surprises on the way, an small invention, and lots of learning about Pell's equation, square roots, GCD, x86_64 intrinsics, Riemann Zeta function, and some other things. I'm pretty happy with it!"

Note that a lobsters comment compared this to specific fixed-point arithmetic:
https://en.wikipedia.org/wiki/Q_(number_format)
graphics  cg  math  rendering  2019 
january 2019 by mechazoidal
2D SDF Shadows
This is using Unity shaders (hlsl/Cg), but relatively understandable
sdf  rendering  graphics  unity  shaders  howto  gamedev  piperesearch 
december 2018 by mechazoidal
Xft but for XCB
On using the font-for-xcb library to make it a little easier
x11  facme  rendering  fonts  unix 
september 2018 by mechazoidal
Pseudo-bandlimited pixel art filtering in 3D – a mathematical derivation – Maister's Graphics Adventures
"Tastefully merging retro pixel art with 3D environment is a very cool aesthetic to me, so I want it to look right. Taking a signal processing approach to the problem, I wanted to see if I could solve the issue in a mathematically sound way. Correctly filtering pixel art is a challenge, especially in a 3D environment, because none of the GPU hardware assisted filtering methods work well. "
rendering  math  shaders  graphics  pixelart  gpu 
august 2018 by mechazoidal
Eric Jang: Dijkstra's in Disguise
"We have 3 very well-known algorithms (currency arbitrage, Q-learning, path tracing) that independently discovered the principle of relaxation used in shortest-path algorithms such as Dijkstra's and Bellman-Ford. Remarkably, each of these disparate fields of study discovered notions of hard and soft optimality, which is relevant in the presence of noise or high-dimensional path integrals."
It's shown how it applies to finance and computer graphics.
algorithms  graph  rendering  math  finance 
august 2018 by mechazoidal
Swallowing the elephant (part 1)
Noting that it's not just calculations that can take time, but the metadata management as well
Part 2: http://pharr.org/matt/blog/2018/07/09/moana-island-pbrt-2.html
rendering  animation  piperesearch  multipart 
july 2018 by mechazoidal
WebGL Font Rendering Demo
Oh, so it might be possible to easily render clean fonts in opengl?
rendering  opengl  fonts  piperesearch  webgl 
march 2017 by mechazoidal
Dev:Source/Text/Rendering - BlenderWiki
Clear AA text rendering in opengl is still tricky
rendering  fonts  piperesearch  blender 
march 2017 by mechazoidal
llvmpipe | The Mesa 3D Graphics Library
"The Gallium llvmpipe driver is a software rasterizer that uses LLVM to do runtime code generation. Shaders, point/line/triangle rasterization and vertex processing are implemented with LLVM IR which is translated to x86 or x86-64 machine code. Also, the driver is multithreaded to take advantage of multiple CPU cores (up to 8 at this time). It's the fastest software rasterizer for Mesa."
(also see the massive list of linked papers)
opengl  x86  llvm  graphics  rendering  resource 
december 2016 by mechazoidal
GPU text rendering with vector textures
"This post presents a new method for high quality text rendering using the GPU. Unlike existing methods it provides antialiased pixel accurate results at all scales with no runtime CPU cost." : storing the actual bezier curves making up characters, and evaluating them in a fragment shader. Note the linked POC implemented in WebGL, real-time rendering a PDF file at infinite zoom levels!
rendering  gpu  shaders  graphics  piperesearch 
november 2016 by mechazoidal
Bitmap fonts for C/C++ 3D programmers
"This a collection of public domain C/C++ .inl files which define bitmap fonts that can be stored in textures. They are platform-independent; you have to create a texture from the bitmap data and draw characters as textured quads. Four fonts are provided: Arial, Times New Roman, Courier, Consolas"
fonts  resource  piperesearch  rendering  graphics 
november 2016 by mechazoidal
akrinke/Font-Stash
"enables easy string rendering in OpenGL applications. It supports truetype fonts and UTF-8 encoded localized strings. All glyphs are cached in OpenGL texture atlases. Font rasterization is done using Sean Barrett's stb_truetype.h. originally created and published by Mikko Mononen."
(not sure if related to https://github.com/memononen/fontstash )
opengl  library  fonts  gui  piperesearch  rendering  graphics 
november 2016 by mechazoidal
The Book of Shaders
"This is a gentle step-by-step guide through the abstract and complex universe of Fragment Shaders."
shaders  piperesearch  rendering  glsl  book  webgl  opengl 
september 2016 by mechazoidal
Massively-Parallel Vector Graphics
"We present a massively parallel vector graphics rendering pipeline that is divided into two components. The preprocessing component builds a novel adaptive acceleration data structure, the shortcut tree. Tree construction is efficient and parallel at the segment level, enabling dynamic vector graphics."
vector  graphics  rendering  piperesearch  paper  gpu  2d 
may 2016 by mechazoidal
smallpt: Global Illumination in 99 lines of C++
Look closely at the linked slides: it's more complicated than you might think
graphics  raytracing  programming  raytracer  rendering  piperesearch 
may 2016 by mechazoidal
PSOFT WEBSITE - Pencil+ 3
According to Trigger/Khara, this is one of the two major toon shaders used in Japan?
piperesearch  shaders  3dsmax  3d  rendering  software 
march 2016 by mechazoidal
nvpro-pipeline/pipeline
" a C++ 11 based object-oriented, cross-platform research rendering pipeline with focus on minimum CPU cost and maximum modularization of the steps of a rendering pipeline. It is being developed by the NVIDIA Developer Technology Platform team." -- basis for Advanced Scenegraph and NVpro-Pipeline/SceneTree presentations
c++  piperesearch  rendering  opengl  repo:github  graphics  3d 
february 2016 by mechazoidal
Advanced Scenegraph Rendering Pipeline | GPUTechConf 2013
By Nvidia, proposing several ideas:
"SceneTree" instead of a classic scenegraph(ie, render-while-traverse).
"ShapeList" for render-what-you-need based on dirty nodes in SceneTree(?)
graphics  pdf  presentation  slides  3d  rendering  scenegraph  piperesearch  opengl 
february 2016 by mechazoidal
What is state-of-the-art for text rendering in OpenGL as of version 4.1? | Stack Overflow
"The best trade-off between "fast" and "quality" are still textured quads with a signed distance field texture. It is very slightly slower than using a plain normal textured quad, but not so much. [...] Also, the technique can be downgraded nicely to older hardware, if needed."
some other approaches noted, but note that NO OGL solution can type-hint, and also that it may be overkill for less than billions of chars.
opengl  rendering  from:stackoverflow  piperesearch 
february 2016 by mechazoidal
Dev. Blog of Edan Kwan - Fake and cheap 3D metaball
Faking a metaball using particles instead of 3D geometry or marching cubes
webgl  rendering  piperesearch  graphics  threejs 
january 2016 by mechazoidal
LuxRender
"a physically based and unbiased rendering engine. Based on state of the art algorithms, LuxRender simulates the flow of light according to physical equations, thus producing realistic images of photographic quality."
opensource  graphics  rendering  software  piperesearch 
january 2016 by mechazoidal
Distributed Rendering with Rust and Mio
Breaking an image into chunks and parceling them out to worker nodes. MIO is used for asynchronous job queues, albeit in a simple way(master node has a TCP connection, absolutely no fault-tolerance)
programming  rust  distributed  rendering  piperesearch 
january 2016 by mechazoidal
ray marching (with THREE.js) - Youpi !
Noting some good ways to get started with ray-marching in three.js, and links to hints on SDFs
threejs  graphics  rendering  signed-distance  piperesearch 
december 2015 by mechazoidal
Closest Point Coordinate Fields
"two-channel images related to Voronoi diagrams and distance fields."
Voronoi applications: Warping, closest-point-picking, and high-quality magnification
graphics  post  math  gamedev  rendering 
october 2015 by mechazoidal
Your template language is killing the web.
PR: nothing terribly new, but now even the webdevs are starting to get it: "At a high level, these instructions describe how to update the state of a view. They are also portable and can be evaluated anywhere. We can easily send the instructions to clients concerned with the new state and let a client library take care of updating the rendered view."
medium  article  web  webdev  rendering  piperesearch  javascript 
april 2015 by mechazoidal
What's the best way to organize small textures in OpenGL? |
PR: "Texture arrays are as close as you can get in OpenGL to the descriptor heap/table design of the modern graphics APIs like Mantle or Vulkan or Direct3D 12. If you build your graphics wrapper around the idea of an abstracted texture array storage for all your textures it'll be somewhat easier to port to the new APIs - and actually get moderate efficiency gains from them - when they're out."
stackoverflow  vulkan  piperesearch  textures  rendering 
april 2015 by mechazoidal
Library: Pixar One Twenty Eight - RenderMan Community
"The [128 repeating] texture library has been upgraded and now includes bump and normal maps. The resolution has also been increased to 1024x1024. While created in 1993, this library still has many potential uses. Enjoy."
rendering  resource  textures  pixar 
april 2015 by mechazoidal
The interviewer was trying to figure out why the subdivision process doesn't tur... | Hacker News
"You can also make creases in subdivision surfaces by using different subdivision weights over the surface of the model, which may be what DeRose is getting at when he answers with "magic numbers". But it's my understanding that most modern CG is done using subdivision with the standard Catmull-Clark weights over the entire model, instead relying on the density of the input mesh to specify detail."

"This is correct. Explicit/per vertex subdivision weights are basically never used in high end CG. Geometric detail is used, since it is simple and universal. Geometry density is no longer a significant factor in interactivity and not the most significant factor in rendering."
piperesearch  cg  rendering  hn  comment  2014 
november 2014 by mechazoidal
CGSociety - Building 3D with Ikea
Ikea basically uses 3D for most of their catalog at this point. Interestingly enough, they had career swaps between their 3d artists and photographers.
3d  rendering  article  art  piperesearch 
august 2014 by mechazoidal
Tweet from mauve (mauvecow)
on GGXrd? "The real innovation is the combo of vertex normal displacement, shadow bias, outline width, and outline z-shift, to fix cel-shading errors."
piperesearch  rendering  celshading  tweet 
july 2014 by mechazoidal
Polycount Forum - Convincing 3d that looks like 2d.... Wow
Translation and rendering details on how ASW got GG Xrd's 3d-like 2d graphics
gamedev  2d  3d  games  shaders  rendering  piperesearch  post  polycount 
july 2014 by mechazoidal
c0de517e: How to make a rendering engine
"Many scenegraphs are used as a transformation hierarchy. It's silly, on most engines a tiny fraction of objects need that, mostly the animation/skinning system for its bones. Bones do express a graph, but it's not enough of a reason to base your -entire- rendering system on it."
programming  graphics  rendering  piperesearch  3d  scenegraph 
april 2014 by mechazoidal
OpenSubdiv Architecture
"Maya and Pixar’s proprietary Presto animation system can take 100ms to subdivide a character of 30,000 polygons to the second level of subdivision (500,000 polygons). By doing the same thing in 3ms, OpenSubdiv allows the user to see the smooth, accurate limit surface at all times."
library  rendering  graphics  cg  piperesearch 
november 2013 by mechazoidal
Quel Solaar
Eskil Sternbech's site: home of the semi-MMO "Love", the Verse protocol, and other interesting graphic/network technologies.
As of 2019, his latest project is a professional version of the UV-Unwrapper he developed for LOVE
(2019: Note that there is background Javascript animation, so the page may take awhile to load)
games  graphics  gamedev  rendering  software  piperesearch 
february 2008 by mechazoidal

Copy this bookmark:



description:


tags: