7 votes
Accepted

Volume Rendering (Path Tracing & Real-Time)

Ray marching is a ray tracing method where you take multiple steps along a ray to find intersection with geometry or to perform integration of in-scattered light from participating media (fog, clouds, ...
JarkkoL's user avatar
  • 3,636
7 votes
Accepted

Experimental real-time shadowing techniques?

There’s an interesting technique that’s been used in demoscene and Shadertoy projects for a while, and an analogue of which recently made it into Unreal Engine 4: using signed-distance fields and ...
Noah Witherspoon's user avatar
6 votes
Accepted

How to calculate volume of any given 3D mesh

The triangle form of the Shoelace Formula can be extended to 3D by using tetrahedrons instead of triangles. Pick a point, Any point can be used, even one of the original vertices of the mesh (...
lfgtm's user avatar
  • 456
5 votes

Volume Rendering in simple words

Volume rendering is not like ray-tracing, it is like "scene rendering". i.e. there exists several algorithms to render volumes. One close to ray-tracing is ray-marching, and has may variants. The ...
Fabrice NEYRET's user avatar
3 votes
Accepted

mapping 3d texture on view frustum (or part of it)

In techniques I've seen that use a frustum-aligned voxel grid (so-called "froxels"), it looks like option 2 in your diagram. The voxels are cuboids in post-projective screen space, so when transformed ...
Nathan Reed's user avatar
3 votes
Accepted

(Lorenz-)Mie phase function instead of Henyey-Greenstein?

It's almost never a problem of computational costs, it's a matter of how well a function works in a Monte Carlo scenario. Ie. how well it can be importance sampled. That generally leads to how well it ...
Max Tarpini's user avatar
3 votes
Accepted

Techniques to implement a glow that encompasses a volume

A simple spherical light volume can be computed as a post processing effect by drawing a cube with the face winding direction reversed (left hand winding vs right hand winding). This displays the ...
pmw1234's user avatar
  • 3,219
2 votes
Accepted

Why does UV tiling affect performance in volumetric ray marching?

It sounds like you are experiencing a loss of texture cache hit rate on your 3D texture. As with any modern processor, GPUs have a cache hierarchy. Texture units typically read from a local L1 cache, ...
Nathan Reed's user avatar
2 votes
Accepted

How to handle different data types (uint8, uint16, float) in Volume Datasets?

Ok after searching a whole lot on the internet I found a slide which answered most of my questions and doubts. I'm dumping it here in-case anybody else is curious what these datasets usually contain ...
gallickgunner's user avatar
2 votes
Accepted

How to do heterogeneous volume absorption using path tracing?

Your equation for the absorption-only model is correct: You multiply the luminance $L_x$ at the surface by the transmittance of the participating media between eye and the surface. For homogeneous ...
JarkkoL's user avatar
  • 3,636
1 vote
Accepted

Trying to understand how to render a volumetric point light

Here are a few steps to (hopefully) help get you going: Rendering the cube: For the geometry a simple cube is needed, so really the first step is just to get a cube rendering just like you would ...
pmw1234's user avatar
  • 3,219
1 vote

Volumetric raycasting with transparent rasterized geometry

This is called "deep shadow mapping" and deep compositing. Sadly invented long before you had this ideas yourself); Now you are talking about implementing this idea specifically on a given ...
user18490's user avatar
  • 656
1 vote

Frustum aligned volume integration - aliasing issue - temporal reprojection

You can look into alias-free volumetric sampling algorithm by Huw Bowles for potential solution to the ray marching aliasing issues. The basic idea is to snap your samples to planes based on the ray ...
JarkkoL's user avatar
  • 3,636
1 vote

Frustum aligned volume integration - aliasing issue - temporal reprojection

Well actually I think I was doing it wrong. I stored raymarching effects in 2D texture. This is not correct because it suffers from issues. Correct way is store raymarching effect in 3D texture, to ...
mdkdy's user avatar
  • 2,169
1 vote

How to handle different data types (uint8, uint16, float) in Volume Datasets?

It seems you want to work with values between 0-255. For uint16 datasets, you can put it inside 0-255 range like this: $newValue = 255 * \frac{oldValue}{(2^{16} - 1)}$ where $oldValue$ is an uint16 ...
YardenJ2R's user avatar
1 vote

Deep Learning for 3D Point Clouds, volume detection and meshing

This is just food for thought: One potential way to analyze the data is by converting the point clouds to soil density clouds by looking at the distances between points at each excavation level. ...
pmw1234's user avatar
  • 3,219
1 vote
Accepted

Adding two fogs

After some research i think i have final answer. General fog equation looks something like this: $$ L(t)=L_p\color{red}{T(t)} + \int_0^t\color{blue}{T(x)}\color{green}{\sigma(x)L(x)}dx $$ ...
Derag's user avatar
  • 596
1 vote

Local Coordinates of Deformed Lattice

Maybe something quick (to set up, no guarantees of actual speed) and dirty. Whatever your method was, it probably boiled down to a vector function \begin{align} \begin{bmatrix} x,\, y,\, z\end{...
Futurologist's user avatar
1 vote

Ghosting in volumetric lighting

Temporal by definition will ghost. I’d limit past frame sampling, apply weight < 0.5, limit movement etc.
Alexey L's user avatar
1 vote
Accepted

Choosing corner values for trilinear interpolation

As a rule, SDFs do much better under interpolation than regular images do—it’s why you can mostly get away with using tiny textures for e.g. font data. You should be fine interpolating neighboring ...
Noah Witherspoon's user avatar
1 vote

How to compute volume of intersection of non-axis-aligned cuboids in 3D?

You can use CGAL's half_space_intersection_3 or half_space_intersection_with_construction_3 functions, where the half-spaces are defined by the faces of the cuboids.
Iddo Hanniel's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible