<figure><img src="image_1.png" /></figure>

HAL
open science

(keynote) Managing Ultra-high Complexity in Real-time
Graphics: Some Hints and Ingredients

Fabrice Neyret

<figure><img src="image_2.png" /></figure>

To cite this version:

Fabrice Neyret. (keynote) Managing Ultra-high Complexity in Real-time Graphics: Some Hints and Ingredients. HPG 2019 - High-Performance Graphics, Jul 2019, Strasbourg, France. hal-02333768

HAL Id: hal-02333768

https://inria.hal.science/hal-02333768v1

Submitted on 4 Jun 2025

**HAL** is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_3.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Managing ultra-high complexity in real-time:
some hints and ingredients

Fabrice NEYRET

CNRS / INRIA / Grenoble University, France
Pheno:

* Forests:

* Rivers:

* Ocean:

* Clouds:

* Smoke:

* Astro-imagery:

* Advected textures,
Flow Noise:

* Bark, lava:

<figure><img src="image_4.png" /></figure>

<figure><img src="image_5.png" /></figure>

<figure><img src="image_6.png" /></figure>

<figure><img src="image_7.png" /></figure>

<figure><img src="image_8.png" /></figure>

<figure><img src="image_9.png" /></figure>

<figure><img src="image_10.png" /></figure>

<figure><img src="image_11.png" /></figure>

<figure><img src="image_12.png" /></figure>

<figure><img src="image_13.png" /></figure>

<figure><img src="image_14.png" /></figure>

<figure><img src="image_15.png" /></figure>

<figure><img src="image_16.png" /></figure>

<figure><img src="image_17.png" /></figure>

<figure><img src="image_18.png" /></figure>

<figure><img src="image_19.png" /></figure>

<figure><img src="image_20.png" /></figure>

<figure><img src="image_21.png" /></figure>

<figure><img src="image_22.png" /></figure>

<figure><img src="image_23.png" /></figure>

<figure><img src="image_24.png" /></figure>

<figure><img src="image_25.png" /></figure>

<figure><img src="image_26.png" /></figure>

<figure><img src="image_27.png" /></figure>

<figure><img src="image_28.png" /></figure>

<figure><img src="image_29.png" /></figure>
# Representations:

* Textural world:

* Appearance filtering:

* SVO:

* smart voxels:

<figure><img src="image_30.png" /></figure>

<figure><img src="image_31.png" /></figure>

<figure><img src="image_32.png" /></figure>

<figure><img src="image_33.png" /></figure>

<figure><img src="image_34.png" /></figure>

<figure><img src="image_35.png" /></figure>

<figure><img src="image_36.png" /></figure>

<figure><img src="image_37.png" /></figure>

<figure><img src="image_38.png" /></figure>

<figure><img src="image_39.png" /></figure>

<figure><img src="image_40.png" /></figure>

<figure><img src="image_41.png" /></figure>

<figure><img src="image_42.png" /></figure>
# Reproducing the Natural Complexity
Reproducing the Natural Complexity

ultra-detailed + ultra large
# Reproducing the Natural Complexity

* ultra-detailed + ultra large
* shape + animation + rendering
Reproducing the Natural Complexity

ultra-detailed + ultra large

shape + animation + rendering

seamless + realistical
Reproducing the Natural Complexity

ultra-detailed + ultra large

shape + animation + rendering

realistical

in real-time
# Reproducing the Natural Complexity

* ultra-detailed + ultra large
* shape + animation + rendering
* realistical
* in real-time
* controlable
Reproducing the Natural Complexity

ultra-detailed + ultra large

shape + animation + rendering

realistical

in real-time

controlable

NB: gaming more challenging than prod :
we don't know where/what player will do
(and 1 / millionth of time budget)
So, what can we do ? → some generalities

* Avoid wasting : often, realize el. useless after processed: v. frustum, hidden...
  → requires to structure data
So, what can we do ? → some generalities

* Avoid wasting : often, realize el. useless after processed: v. frustum, hidden...
  → requires to structure data

* Use available knowledge :

- a priori knowledge on content

- assumptions and requirements on context

- be consistent ( quality = worst parts, not best )
So, what can we do ? → some generalities

* Avoid wasting : often, realize el. useless after processed: v. frustum, hidden...
  → requires to structure data

* Use available knowledge :

- a priori knowledge on content

- assumptions and requirements on context

- be consistent ( quality = worst parts, not best )

* Use relevant scale : smallest image element = pixels
So, what can we do ? → some generalities

* Avoid wasting : often, realize el. useless after processed: v. frustum, hidden...
  → requires to structure data

* Use available knowledge :

- a priori knowledge on content

- assumptions and requirements on context

- be consistent ( quality = worst parts, not best )

* Use relevant scale : smallest image element = pixels

→ **Minimalism** : do/store only what you need. ideally 1 sample / pix.
→ requires adapted representation
# So, what can we do ? → some generalities

* Avoid wasting : often, realize el. useless after processed: v. frustum, hidden...
  → requires to structure data

* Use available knowledge :

- a priori knowledge on content

- assumptions and requirements on context

- be consistent ( quality = worst parts, not best )

* Use relevant scale : smallest image element = pixels

→ **Minimalism** : do/store only what you need. ideally 1 sample / pix.

→ requires adapted representation

<figure><img src="image_43.png" /></figure>
# Minimalism: guides

* "Cost morality" : less info → should cost less, not more
e.g.: soft shadows, depth of field...
# Minimalism: guides

* "Cost morality" : less info → should cost less, not more
e.g.: soft shadows, depth of field...

* "What a painter would do" :

<figure><img src="image_44.png" /></figure>
# Modelization / Choosing a representation

## Why MIPmap works so well* ? ( 1 sample / pix )

- backproj(pixel) on surface

- mapping : direct access to data

- texture pixel grid → direct access to neighborhood

- texture pixel grid → easy LOD hierarchy → precomputed filtering

<figure><img src="image_45.png" /></figure>
# Modelization / Choosing a representation

## General scheme for 1 sample / pix:

- differential cone tracing through 3D scene. (NB: DoF & soft shadow also cones. + tracing ray differentials).

- requires representing appearance at this scale
& filtering detailed appearance down to this scale

<figure><img src="image_46.png" /></figure>
# Modelization / Choosing a representation

<figure><img src="image_47.png" /></figure>

Content proxy + appearance model: some ingredients

- mesh, voxels, surfels, transp slices, textures, Zmaps, bump maps, NDF, flakes...
# Modelization / Choosing a representation

<figure><img src="image_48.png" /></figure>

## Content proxy + appearance model: some ingredients

- mesh, voxels, surfels, transp slices, textures, Zmaps, bump maps, NDF, flakes...

- [Kajiya85] hierarchy of details: geom / bump texture / brdf, phase func "anisotropic reflection models"

- ex: [KK89] "render. fur with 3D text." : voxels + phase func + textural world

<figure><img src="image_49.png" /></figure>
<figure><img src="image_50.png" /><figcaption>Figure 16</figcaption></figure>

<figure><img src="image_51.png" /></figure>

- volume = impressionism illusion

- hierarchy of models [Kaj85]

geom → texture → phase function

- mapping shapes onto shapes

(shape as a 3D material)

<figure><img src="image_52.png" /><figcaption>Figure 9</figcaption></figure>

“texture”

<figure><img src="image_53.png" /><figcaption>Figure 10</figcaption></figure>

<figure><img src="image_54.png" /></figure>

phase func
# Modelization / Choosing a representation

<figure><img src="image_55.png" /></figure>

## Content proxy + appearance model: some ingredients

- mesh, voxels, surfels, transp slices, textures, Zmaps, bump maps, NDF, flakes...

- [Kajiya85] hierarchy of details: geom / bump texture / brdf, phase func "anisotropic reflection models"

- ex: [KK89] "render.fur with 3D text." : voxels + phase func + textural world
# Modelization / Choosing a representation

<figure><img src="image_56.png" /></figure>

## Content proxy + appearance model: some ingredients

- mesh, voxels, surfels, transp slices, textures, Zmaps, bump maps, NDF, flakes...

- [ Kajiya85 ] hierarchy of details: geom / bump texture / brdf, phase func "anisotropic reflection models"

- ex: [KK89] "render. fur with 3D text." : voxels + phase func + textural world

- expr. vs tables. Datatype: raster(grid) / vector / polynomial... Parameterization.

## We want dynamic LOD →

- hierarchical is important (closed repr.)

- seamless: transitions btw LOD (and repr.)

- filter appearance, not raw data
- whole Earth, all scales

- seamless, realistic

- animated

http://proland.inria.fr

<figure><img src="image_57.png" /></figure>

**Real-time Realistic Rendering and Lighting of Forests**

Bruneton Éric, Neyret Fabrice
Comput. Graph. Forum, **29** (2), ???-???,, 2012.

<figure><img src="image_58.png" /></figure>

**Real-time Realistic Ocean Lighting using Seamless Transitions from Geometry to BRDF**

Bruneton Éric, Neyret Fabrice, Holzschuch Nicolas
Comput. Graph. Forum, **29** (2), 487-496, 2010.

<figure><img src="image_59.png" /></figure>

**Scalable Real-Time Animation of Rivers**

Yu Qizhi, Neyret Fabrice, Bruneton Éric, Holzschuch Nicolas
Comput. Graph. Forum, **28** (2), 239-248, 2009.

<figure><img src="image_60.png" /></figure>

**Precomputed Atmospheric Scattering**

Bruneton Éric, Neyret Fabrice
Comput. Graph. Forum, **27** (4), 1079-1086, 2008.

<figure><img src="image_61.png" /></figure>

**Real-time rendering and editing of vector-based terrains**

Bruneton Éric, Neyret Fabrice
Comput. Graph. Forum, **27** (2), 311-320, 2008.

<figure><img src="image_62.png" /></figure>
# PROLAND, with Eric Bruneton

- whole Earth, all scales

- seamless, realistic

- animated

...only at useful pos & resol: quad-trees
+ out of core

<figure><img src="image_63.png" /></figure>

http://proland.inria.fr

<figure><img src="image_64.png" /></figure>

**Real-time Realistic Rendering and Lighting of Forests**

Bruneton Éric, Neyret Fabrice
Comput. Graph. Forum, **29** (2), ???-???,, 2012.

<figure><img src="image_65.png" /></figure>

**Real-time Realistic Ocean Lighting using Seamless Transitions from Geometry to BRDF**

Bruneton Éric, Neyret Fabrice, Holzschuch Nicolas
Comput. Graph. Forum, **29** (2), 487-496, 2010.

<figure><img src="image_66.png" /></figure>

**Scalable Real-Time Animation of Rivers**

Yu Qizhi, Neyret Fabrice, Bruneton Éric, Holzschuch Nicolas
Comput. Graph. Forum, **28** (2), 239-248, 2009.

<figure><img src="image_67.png" /></figure>

**Precomputed Atmospheric Scattering**

Bruneton Éric, Neyret Fabrice
Comput. Graph. Forum, **27** (4), 1079-1086, 2008.

<figure><img src="image_68.png" /></figure>

**Real-time rendering and editing of vector-based terrains**

Bruneton Éric, Neyret Fabrice
Comput. Graph. Forum, **27** (2), 311-320, 2008.

<figure><img src="image_69.png" /></figure>

A C++/OpenGL library for the real-t

www

video
demo
simulate all waves ...only at useful pos & resol

waves eqn: Σ trochöds
+ oceanographic spectrum A(k)

$$ egin{cases} x - x_0 = A e^{k z_0} \sin(\omega t - k x_0) \\ z - z_0 = A e^{k z_0} \cos(\omega t - k x_0) \end{cases} $$

<figure><img src="image_70.png" /></figure>

<figure><img src="image_71.png" /></figure>

<figure><img src="image_72.png" /></figure>
simulate all waves ...only at useful pos & resol

waves eqn: Σ trochöids
+ oceanographic spectrum A(k)

$$ \begin{cases} x - x_0 = A e^{k z_0} \sin(\omega t - k x_0) \\ z - z_0 = A e^{k z_0} \cos(\omega t - k x_0) \end{cases} $$

<figure><img src="image_73.png" /></figure>

Appearance filtering: shape→<N>→BRDF

<figure><img src="image_74.png" /></figure>

<figure><img src="image_75.png" /></figure>

<figure><img src="image_76.png" /></figure>
# Endless forest, with Eric Bruneton [EG'12]

## in Proland ( ⇒ all scales, real-time, seamless LOD )

## realism: sun+sky, trees, silverlining & transparency, all-scales correlations ( hot spot ) + shadowing ( ambient occlusion )

<figure><img src="image_77.png" /></figure>

photos:

<figure><img src="image_78.png" /></figure>

our:

<figure><img src="image_79.png" /></figure>

video

demo

video

full
- several tree species

- Poisson-disk distribs

- gaussian params

- large scale: param maps

<figure><img src="image_80.png" /></figure>

3 representations: near, mid, far

<figure><img src="image_81.png" /></figure>

individuals with parallax
and detailed shading
- several tree species

- Poisson-disk distribs

- gaussian params

- large scale: param maps

<figure><img src="image_82.png" /></figure>

3 representations: near, mid, far

<figure><img src="image_83.png" /></figure>

individuals with parallax
and detailed shading

Near: ~Zmap IBR

<figure><img src="image_84.png" /></figure>

Zv,Zl → extinction

<figure><img src="image_85.png" /></figure>

<figure><img src="image_86.png" /></figure>

<figure><img src="image_87.png" /></figure>
- several tree species

- Poisson-disk distribs

- gaussian params

- large scale: param maps

<figure><img src="image_88.png" /></figure>

3 representations: near, mid, far

<figure><img src="image_89.png" /></figure>

forest dyn texture
tree / ground

forest dyn
 الشارع

individuals with parallax
and detailed shading

<figure><img src="image_90.png" /></figure>

Mid & far: masks*shaders (~ "Fake Fur Rendering" [Sig97])

<figure><img src="image_91.png" /></figure>

<figure><img src="image_92.png" /></figure>

Near: ~Zmap IBR

<figure><img src="image_93.png" /></figure>

Zv, Zl → extinction

<figure><img src="image_94.png" /></figure>

<figure><img src="image_95.png" /></figure>
→ Deep a priori-knowledge allows deep LOD

What about more generic content ?
<figure><img src="image_96.png" /><figcaption>Figure 16</figcaption></figure>

<figure><img src="image_97.png" /></figure>

<figure><img src="image_98.png" /><figcaption>Figure 9</figcaption></figure>

<figure><img src="image_99.png" /><figcaption>Figure 10</figcaption></figure>

<figure><img src="image_100.png" /><figcaption>Figure 5</figcaption></figure>

<figure><img src="image_101.png" /><figcaption>Figure 8</figcaption></figure>

- only for hairs

- not hierarchical / not filterable

- stochastic ray-tracing

→ static hierar. of details: not for dyn. LOD

→ PhD topic ! :-)
tiling volumetric layer

<figure><img src="image_102.png" /></figure>

**Volume:**

- multiscale (MIPmap)

- compress void (SVO)

→ octree of voxels

**Voxel data:**

- “generic” reflectance

- viewdep opacity

<figure><img src="image_103.png" /></figure>

pdfs

videos

<figure><img src="image_104.png" /><figcaption>( → SGGX, GGX )</figcaption></figure>

impressionism
illusion :

<figure><img src="image_105.png" /></figure>

video

torus

video

forest

video

flag

video

lawn
tiling volumetric layer

<figure><img src="image_106.png" /></figure>

**Volume:**

- multiscale (MIPmap)

- compress void (SVO)

→ octree of voxels

**Voxel data:**

- “generic” reflectance

- viewdep opacity

<figure><img src="image_107.png" /></figure>

pdfs

videos

NDF of ellipsoid

<figure><img src="image_108.png" /><figcaption>( → SGGX, GGX )</figcaption></figure>

video

torus

video

forest

video

flag

video

lawn

impressionism
illusion :

<figure><img src="image_109.png" /></figure>

<figure><img src="image_110.png" /></figure>

Differential cone tracing ( 3D MIP-mapping )
1 ray per pixel. Is prefiltering shape appearance !

<figure><img src="image_111.png" /></figure>

<figure><img src="image_112.png" /></figure>

<figure><img src="image_113.png" /></figure>
# Volumetric Textures: real-time (Z-buff):

with A Meyer [ 98 ],
Ph Decaudin [ 04,09 ]

Volume as textured transparent slices → now real-time !
( no phase function. Only RGBA filtering )

<figure><img src="image_114.png" /></figure>

<figure><img src="image_115.png" /></figure>

<figure><img src="image_116.png" /></figure>

Tiled pattern on volumetric layer:

<figure><img src="image_117.png" /></figure>

As free objects:

<figure><img src="image_118.png" /></figure>
# GigaVoxels, with Cyril Crassin [13D'09]

## GPU cone-tracing full volumetric scene

<figure><img src="image_119.png" /></figure>

<figure><img src="image_120.png" /></figure>

Model courtesy of 3D-Coat/Rick Sarasin
# GigaVoxels, with Cyril Crassin [I3D'09]

## GPU cone-tracing full volumetric scene

<figure><img src="image_121.png" /></figure>

**Volume:**

- multiscale

- compress void (SVO)

→ octree of bricks
+ out of core

- ( hardcoded gradient phase function )

<figure><img src="image_122.png" /></figure>

→ "volumetric PROLAND"

<figure><img src="image_123.png" /></figure>
# GigaVoxels, with Cyril Crassin [13D'09]

## GPU cone-tracing full volumetric scene

<figure><img src="image_124.png" /></figure>

**Volume:**

- multiscale

- compress void (SVO)

→ octree of bricks
+ out of core

<figure><img src="image_125.png" /></figure>

Model courtesy of 3D-Coat/Rick Sarasin

<figure><img src="image_126.png" /></figure>

<figure><img src="image_127.png" /></figure>

<figure><img src="image_128.png" /></figure>
# GigaVoxels, with Cyril Crassin [13D'09]

## GPU cone-tracing full volumetric scene

<figure><img src="image_129.png" /></figure>

**Volume:**

- multiscale

- compress void (SVO)

→ octree of bricks
+ out of core

Model courtesy of 3D-Coat/Rick Sarasin

<figure><img src="image_130.png" /></figure>

<figure><img src="image_131.png" /></figure>

Differential cone tracing 1 ray per pixel.

<figure><img src="image_132.png" /></figure>

<figure><img src="image_133.png" /></figure>

<figure><img src="image_134.png" /></figure>

<figure><img src="image_135.png" /></figure>

DoF and soft shadow = blurry
⇒ faster !
## + reflectance + multiple scattering

3I

<figure><img src="image_136.png" /></figure>

<figure><img src="image_137.png" /><figcaption>Differential cone tracing 1 ray per pixel.</figcaption></figure>

<figure><img src="image_138.png" /><figcaption>Voxel-Based cone</figcaption></figure>

<caption>Sparse MipMap pyramid
of pre-integrated values
(stored in the octree)</caption>
# GI-Voxels, with Cyril Crassin [CGF'11]

## + reflectance + multiple scattering

<figure><img src="image_139.png" /></figure>

<figure><img src="image_140.png" /></figure>

### Differential cone tracing 1 ray per pixel

<figure><img src="image_141.png" /><figcaption>Voxel-Based cone</figcaption></figure>

Quadrilinearly
interpolated
samples

Sparse MipMap pyramid
of pre-integrated values
(stored in the octree)

<figure><img src="image_142.png" /><figcaption>Step 1: Render from light sources.</figcaption></figure>

<figure><img src="image_143.png" /><figcaption>Step 2: Filter irradiance values and</figcaption></figure>

<figure><img src="image_144.png" /><figcaption>Step 3: Render from camera. Sample</figcaption></figure>
<figure><img src="image_145.png" /></figure>

<figure><img src="image_146.png" /></figure>

<figure><img src="image_147.png" /></figure>

Voxel-Based cone

Quadrilinearly
interpolated
samples

Sparse MipMap pyramid
of pre-integrated values
(stored in the octree)

Anisotropic Voxel

<figure><img src="image_148.png" /></figure>

## Voxel data: ( smart voxels )

- viewdep opacity ( 6 dir )

- col, reflectance ( lobes ) & light ( 6 dir )

- no reflectance LOD

<figure><img src="image_149.png" /><figcaption>Step 1: Render from light sources.</figcaption></figure>

<figure><img src="image_150.png" /><figcaption>Step 2: Filter irradiance values and</figcaption></figure>

<figure><img src="image_151.png" /><figcaption>Step 3: Render from camera. Sample</figcaption></figure>
# Smarter voxels: correlation, with G. Loubet [EG'18]

<figure><img src="image_152.png" /></figure>

-

silhouette issue

<figure><img src="image_153.png" /><figcaption>Silhouette</figcaption></figure>

<figure><img src="image_154.png" /><figcaption>Standard model
uncorrelated</figcaption></figure>
# Smarter voxels: correlation, with G. Loubet [EG'18]

<figure><img src="image_155.png" /></figure>

- silhouette issue

- self-shadowing issue

<figure><img src="image_156.png" /><figcaption>Silhouette</figcaption></figure>

<figure><img src="image_157.png" /><figcaption>Standard model
uncorrelated</figcaption></figure>

<figure><img src="image_158.png" /><figcaption>Our model
Isotropic shadowing</figcaption></figure>

<figure><img src="image_159.png" /><figcaption>Our model
Anisotropic shadowing</figcaption></figure>

<figure><img src="image_160.png" /></figure>

<figure><img src="image_161.png" /></figure>

<figure><img src="image_162.png" /></figure>

<figure><img src="image_163.png" /></figure>

<figure><img src="image_164.png" /></figure>

( renderer: Mitsuba )
# Mixing mesh and volumes

- Because source data is often mesh

- Animated meshes

- Because host render engine is often mesh based

- For efficiency ( walls... )

and precision ( walls... )
# Mixing mesh and Volumes, with C. Crassin, G. Loubet

- Z-buffer + GI-Voxel in fragment shader

CC [ CGF'11 ]

- dynamic voxelization

<figure><img src="image_165.png" /></figure>

video

GI voxels
# Mixing mesh and Volumes, with C. Crassin, G. Loubet

- Z-buffer + GL-Voxel in fragment shader

CC [ CGF'11 ]

- dynamic voxelization

- geom LOD + appearance filtering

continuous transition ( progressive aggregation ) :

mesh + brdf (GGX) + col

→ voxels + phase-func (SGGX) + col

GL [ EG'17 ]

<figure><img src="image_166.png" /></figure>

pdf

video

<figure><img src="image_167.png" /></figure>

( renderer: Mitsuba )
LOD → Filtering shape into shading:

- That's it for volumes.

- What can we do for surfaces ?

→ heightfield
# Appearance filtering of heightfields

with Eric Heitz

[HPG'12,I3D'13, SIGA'13]

- Small scale relief + visibility
  → all is view-dep and light-dep !

<figure><img src="image_168.png" /></figure>

<figure><img src="image_169.png" /></figure>

<figure><img src="image_170.png" /></figure>

<figure><img src="image_171.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz

[HPG'12,I3D'13, SIGA'13]

- Small scale relief + visibility
  → all is view-dep and light-dep !

<figure><img src="image_172.png" /></figure>

<figure><img src="image_173.png" /></figure>

- Correlations everywhere !

→ light and colors

→ normals

→ visibility

→ occlusion

...

→ + content correlation

→ missing in all bumps

→ microfacet models

<figure><img src="image_174.png" /></figure>

<figure><img src="image_175.png" /></figure>

<figure><img src="image_176.png" /></figure>

<figure><img src="image_177.png" /></figure>

video + pdf
# Appearance filtering of heightfields

with Eric Heitz
[HPG'12,I3D'13, SIGA'13]

## content correlation

ex: color-height,
color-orientation

⇒ pixel integral not separable

(or : why MIPmapping is so wrong)

$$I = \frac{\int_{\mathcal{P}} L_i(x, \omega_i) C(x) \rho(n_x, \omega_o, \omega_i) V_o(x) V_i(x) w_P(x) dx}{\int_{\mathcal{P}} V_o(x) w_P(x) dx}$$

<figure><img src="image_178.png" /></figure>

<figure><img src="image_179.png" /></figure>

<figure><img src="image_180.png" /></figure>

<figure><img src="image_181.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz
[HPG'12,I3D'13, SIGA'13]

BTW, even color{(}texture{)} is an issue

→ also all f(noise): LUT, clamp, abs...

since

average(LUT(text.)) # LUT(average(text.))

<figure><img src="image_182.png" /></figure>

<figure><img src="image_183.png" /></figure>

<figure><img src="image_184.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz
[HPG'12,I3D'13, SIGA'13]

BTW, even color{(}texture{)} is an issue

→ also all f(noise): LUT, clamp, abs...

since

average(LUT(text.)) # LUT(average(text.))

<figure><img src="image_185.png" /></figure>

<figure><img src="image_186.png" /></figure>

→ **Idea:** use stat distrib

1: average = < LUT, histogram >

<figure><img src="image_187.png" /></figure>

LUT (0.5)

<figure><img src="image_188.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz
[HPG'12,I3D'13, SIGA'13]

BTW, even color{(}texture{)} is an issue

→ also all f(noise): LUT, clamp, abs...

since

average(LUT(text.)) # LUT(average(text.))

<figure><img src="image_189.png" /></figure>

<figure><img src="image_190.png" /></figure>

→ **Idea:** use stat distrib

1: average = < LUT, histogram >

2: histogram ~ gaussian

<figure><img src="image_191.png" /></figure>

3: simply precompute iLUT(v,σ)

<figure><img src="image_192.png" /></figure>

LUT (0.5)

<figure><img src="image_193.png" /></figure>

NB: applies to any distrib
e.g., heights ...

<figure><img src="image_194.png" /></figure>
## heightfield content correlation

pb: apparent heights distribution
is view-dep and light-dep

ex: color-height,

<figure><img src="image_195.png" /></figure>

<figure><img src="image_196.png" /></figure>

slope (normal)
distribution

<figure><img src="image_197.png" /></figure>

slope (normal)
distribution

<figure><img src="image_198.png" /></figure>

<figure><img src="image_199.png" /></figure>

## color-shape correlation ⇒ view+light correlation

$$I = \frac{\int_{\mathcal{P}} L_i(x, \omega_i) C(x) \rho(n_x, \omega_o, \omega_i) V_o(x) V_i(x) w_P(x) dx}{\int_{\mathcal{P}} V_o(x) w_P(x) dx}$$

<figure><img src="image_200.png" /></figure>
## heightfield content correlation

pb: apparent heights distribution
is view-dep and light-dep

<figure><img src="image_201.png" /></figure>

<figure><img src="image_202.png" /></figure>

ex: color-height, color-orientation

<figure><img src="image_203.png" /></figure>

color-shape correlation ⇒ view+light correlation

$$I = \frac{\int_{P} L_{i}(x, \omega_{i}) C(x) \rho(n_{x}, \omega_{o}, \omega_{i}) V_{o}(x) V_{i}(x) w_{P}(x) dx}{\int_{P} V_{o}(x) w_{P}(x) dx} \rightarrow$$

<figure><img src="image_204.png" /></figure>

4: effect = lobe offset

→ easy !

<figure><img src="image_205.png" /></figure>

5: NB: for diffuse surface,
effect of envmap = irradiance_map(N)

→ cf colormap(slope)

<figure><img src="image_206.png" /></figure>

<figure><img src="image_207.png" /></figure>

<figure><img src="image_208.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz et.al
[HPG'12,I3D'13, SIGA'13]

## heightfield → BRDF (microfacets)

$$I = \frac{\int_{P} L_i(x, \omega_i) C(x) \rho(n_x, \omega_o, \omega_i) V_o(x) V_i(x) w_P(x) dx}{\int_{P} V_o(x) w_P(x) dx}$$

<figure><img src="image_209.png" /></figure>

<figure><img src="image_210.png" /></figure>

<figure><img src="image_211.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz et.al
[HPG'12,I3D'13, SIGA'13]

<figure><img src="image_212.png" /></figure>

## heightfield → BRDF (microfacets)

$$I = \frac{\int_{P} L_i(x, \omega_i) C(x) \rho(n_x, \omega_o, \omega_i) V_o(x) V_i(x) w_P(x) dx}{\int_{P} V_o(x) w_P(x) dx}$$

<figure><img src="image_213.png" /></figure>

<figure><img src="image_214.png" /></figure>

## microfacets BRDF: Beckmann NDF ← f (slope variance)

<figure><img src="image_215.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz et.al
[HPG'12,I3D'13, SIGA'13]

## heightfield → BRDF (microfacets)

<figure><img src="image_216.png" /></figure>

<figure><img src="image_217.png" /></figure>

## microfacets BRDF: Beckmann NDF ← f ( full slope stat. )
→ tilted anisotropic lobe

<figure><img src="image_218.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz et.al
[HPG'12,I3D'13, SIGA'13]

## heightfield → BRDF (microfacets)

<figure><img src="image_219.png" /></figure>

## LEAN maps → eval slope statistics

## MIPmap = moments → cov matrix

<figure><img src="image_220.png" /></figure>

<figure><img src="image_221.png" /></figure>

## microfacets BRDF: Beckmann NDF ← f ( full slope stat. )

## tilted anisotropic lobe- point light + IBL

<figure><img src="image_222.png" /></figure>
# Appearance filtering of heightfields

with Eric Heitz et.al
[HPG'12,I3D'13, SIGA'13]

## heightfield → BRDF (microfacets)

<figure><img src="image_223.png" /></figure>

## LEAN maps → eval slope statistics

MIPmap = moments → cov matrix

<figure><img src="image_224.png" /></figure>

## microfacets BRDF: Beckmann NDF

→ tilted anisotropic lobe

<figure><img src="image_225.png" /></figure>

<figure><img src="image_226.png" /></figure>

## Effect of geometric distortion on appearance:

<figure><img src="image_227.png" /></figure>

video

T-rex

video

prop

pdf
Managing ultra-high complexity:

so many other important stuffs...
Realistic clouds in real time, with Antoine Bouthors [EGNP'06, I3D'08]

<figure><img src="image_228.png" /><figcaption>pdf</figcaption></figure>

<figure><img src="image_229.png" /><figcaption>pdf</figcaption></figure>

<figure><img src="image_230.png" /><figcaption>Youtube</figcaption></figure>

<figure><img src="image_231.png" /></figure>
# Realistic clouds in real time, with Antoine Bouthors [EGNP'06, I3D'08]

simulating all
light paths:
hard pb.

→ goal: real time !

<figure><img src="image_232.png" /></figure>

<figure><img src="image_233.png" /></figure>

reflectance:
Mie :-s
absorption: 0

<figure><img src="image_234.png" /></figure>

<figure><img src="image_235.png" /></figure>

<figure><img src="image_236.png" /></figure>

<figure><img src="image_237.png" /></figure>

<figure><img src="image_238.png" /></figure>

<figure><img src="image_239.png" /></figure>

<figure><img src="image_240.png" /></figure>

<figure><img src="image_241.png" /></figure>

<figure><img src="image_242.png" /><figcaption>pdf</figcaption></figure>

<figure><img src="image_243.png" /></figure>

<figure><img src="image_244.png" /></figure>

<figure><img src="image_245.png" /></figure>

<figure><img src="image_246.png" /><figcaption>pdf</figcaption></figure>

<figure><img src="image_247.png" /></figure>

<figure><img src="image_248.png" /></figure>

<figure><img src="image_249.png" /></figure>
# Realistic clouds in real time, with Antoine Bouthors [EGNP'06, I3D'08]

simulating all
light paths:
hard pb.

→ real time !

## 3: macro-material

<figure><img src="image_250.png" /></figure>

<figure><img src="image_251.png" /></figure>

(L, V, Vpos, thick.)<sup>5D</sup>

→ collector(pos, σ)<sup>3D</sup>

<figure><img src="image_252.png" /></figure>

fit

<figure><img src="image_253.png" /></figure>

~ "Most Probable Path"

<figure><img src="image_254.png" /></figure>

<figure><img src="image_255.png" /></figure>

<figure><img src="image_256.png" /></figure>

<figure><img src="image_257.png" /></figure>

<figure><img src="image_258.png" /></figure>

<figure><img src="image_259.png" /></figure>

<figure><img src="image_260.png" /></figure>

<figure><img src="image_261.png" /></figure>

pdf

<figure><img src="image_262.png" /></figure>

pdf

<figure><img src="image_263.png" /></figure>

<figure><img src="image_264.png" /></figure>

<figure><img src="image_265.png" /></figure>

<figure><img src="image_266.png" /></figure>

<figure><img src="image_267.png" /></figure>

<figure><img src="image_268.png" /></figure>
simulating all
light paths:
hard pb.

→ real time !

3: macro-material

<figure><img src="image_269.png" /></figure>

<figure><img src="image_270.png" /></figure>

3: separate scattering orders

→ shift Most Probable Path and scale of transport

$\psi(i, \sigma)$

<figure><img src="image_271.png" /></figure>

(L, V, Vpos, thick.)<sub>5D</sub>

→ collector(pos, σ)<sub>3D</sub>

<figure><img src="image_272.png" /></figure>

<figure><img src="image_273.png" /></figure>

<figure><img src="image_274.png" /></figure>

<figure><img src="image_275.png" /></figure>

<figure><img src="image_276.png" /></figure>

<figure><img src="image_277.png" /></figure>

<figure><img src="image_278.png" /></figure>

<figure><img src="image_279.png" /></figure>

<figure><img src="image_280.png" /></figure>

<figure><img src="image_281.png" /></figure>

pdf

<figure><img src="image_282.png" /></figure>

pdf

<figure><img src="image_283.png" /></figure>
# Realistic clouds in real time, with Antoine Bouthors [EGNP'06, I3D'08]

simulating all light

paths:

hard pb.

→ real time !

<figure><img src="image_284.png" /></figure>

## 3: macro-material

(L,V,Vpos,thick.)<sup>5D</sup>

→ collector(pos,σ)<sup>3D</sup>

<figure><img src="image_285.png" /></figure>

## 3: separate scattering orders

→ shift Most Probable Path and scale of transport

## 5: ground ⇐⇒ cloud radiosity, sky illu

$\Psi(i, o)$

<figure><img src="image_286.png" /></figure>

<figure><img src="image_287.png" /></figure>

## 4: solve $i=collect(o)$ for cloud shape

<figure><img src="image_288.png" /></figure>

<figure><img src="image_289.png" /></figure>

<figure><img src="image_290.png" /></figure>

<figure><img src="image_291.png" /></figure>

<figure><img src="image_292.png" /></figure>

<figure><img src="image_293.png" /></figure>

<figure><img src="image_294.png" /></figure>

<figure><img src="image_295.png" /></figure>

<figure><img src="image_296.png" /></figure>

<figure><img src="image_297.png" /></figure>

<figure><img src="image_298.png" /></figure>

<figure><img src="image_299.png" /></figure>

<figure><img src="image_300.png" /></figure>

<figure><img src="image_301.png" /><figcaption>pdf</figcaption></figure>

<figure><img src="image_302.png" /><figcaption>pdf</figcaption></figure>

<figure><img src="image_303.png" /></figure>

<figure><img src="image_304.png" /></figure>

<figure><img src="image_305.png" /></figure>
Animated details
<figure><img src="image_306.png" /></figure>

phqtos
# Fluids as vortex filaments, with Alexis Angelidis [SCA'05,06]

- "soul" of fluid motion

- compact, highres, controlable...

- closer to std CG workflow

<figure><img src="image_307.png" /></figure>

phqtos
- "soul" of fluid motion

- compact, highres, controllable...

- closer to std CG workflow

<figure><img src="image_308.png" /></figure>

<figure><img src="image_309.png" /></figure>

<figure><img src="image_310.png" /></figure>

<figure><img src="image_311.png" /></figure>

<figure><img src="image_312.png" /></figure>

<figure><img src="image_313.png" /></figure>

<figure><img src="image_314.png" /><figcaption>phqtos</figcaption></figure>

<figure><img src="image_315.png" /><figcaption>Lagrangian curves</figcaption></figure>

$$w = \nabla \times v$$

$$v = \iiint_x \frac{(p-x) \times w}{4\pi\|p-x\|^3} dx$$

$$\frac{dw}{dt} = w \cdot \nabla v$$

$$\Gamma = \int_L v \cdot dl = \iint_S \omega \cdot dS$$
- "soul" of fluid motion

- compact, highres, controllable...

- closer to std CG workflow

<figure><img src="image_316.png" /></figure>

<figure><img src="image_317.png" /></figure>

<figure><img src="image_318.png" /></figure>

<figure><img src="image_319.png" /></figure>

<figure><img src="image_320.png" /></figure>

<figure><img src="image_321.png" /></figure>

<figure><img src="image_322.png" /><figcaption>photos</figcaption></figure>

<figure><img src="image_323.png" /><figcaption>Lagrangian curves</figcaption></figure>

<table><thead><tr><th>representation</th><th>Velocity<br>V</th><th>Vorticity<br>ω</th></tr></thead><tbody><tr><td>Eulerian</td><td>popular</td><td></td></tr><tr><td>Lagrangian</td><td></td><td>our<br>method</td></tr></tbody></table>

$$w = \nabla \times v$$

$$v = \iiint_X \frac{(p-x) \times w}{4\pi\|p-x\|^3} dx$$

$$\frac{dw}{dt} = w \cdot \nabla v$$

$$\Gamma = \int_L v \cdot dl = \iint_S \omega \cdot dS$$

+ vortex noise

+ particles
= ellipsoid

<figure><img src="image_324.png" /></figure>

<figure><img src="image_325.png" /></figure>
# Rivers & vector features, with NP,QY,EB,... [SCA'01,EG'09,...]

<figure><img src="image_326.png" /></figure>

<figure><img src="image_327.png" /></figure>

<figure><img src="image_328.png" /></figure>

<figure><img src="image_329.png" /></figure>

(photos)

grid→ high res or aliasing

<figure><img src="image_330.png" /></figure>
# Rivers & vector features, with NP,QY,EB,... [SCA'01,EG'09,...]

<figure><img src="image_331.png" /></figure>

grid→ high res or aliasing

<figure><img src="image_332.png" /></figure>

align mesh with features,

<figure><img src="image_333.png" /></figure>

or meshless

<figure><img src="image_334.png" /></figure>

(photos)

<figure><img src="image_335.png" /></figure>

<figure><img src="image_336.png" /></figure>

<figure><img src="image_337.png" /></figure>
# Rivers & vector features, with NP,QY,EB,... [SCA'01,EG'09,...]

<figure><img src="image_338.png" /></figure>

grid→ high res or aliasing

<figure><img src="image_339.png" /></figure>

align mesh with features,

<figure><img src="image_340.png" /></figure>

or meshless

<figure><img src="image_341.png" /></figure>

(photos)

<figure><img src="image_342.png" /></figure>

analytic flow

<figure><img src="image_343.png" /></figure>

<figure><img src="image_344.png" /></figure>

<figure><img src="image_345.png" /></figure>

<figure><img src="image_346.png" /></figure>
# Fluids amplification: flownoise & advected texture

with K.Perlin, Q.Yu, ... [SigSketch'01, SCA'03, Sig'07, TVCG'11]

1. given: coarse flow simulation

details: use texture

2. advect texture & preserve aspect

<figure><img src="image_347.png" /></figure>

<figure><img src="image_348.png" /></figure>

<figure><img src="image_349.png" /></figure>

<figure><img src="image_350.png" /><figcaption>volume</figcaption></figure>

<figure><img src="image_351.png" /></figure>

<figure><img src="image_352.png" /></figure>

<figure><img src="image_353.png" /><figcaption>height-field</figcaption></figure>

<figure><img src="image_354.png" /></figure>
# Fluids amplification: flownoise & advected texture

with K.Perlin, Q.Yu, ... [SigSketch'01, SCA'03, Sig'07, TVCG'11]

1. given: coarse flow simulation
   details: use texture

3. flownoise: swirling Perlin noise

<figure><img src="image_355.png" /></figure>

<figure><img src="image_356.png" /></figure>

pdf
video

2. advect texture & preserve aspect

<figure><img src="image_357.png" /></figure>

<figure><img src="image_358.png" /></figure>

<figure><img src="image_359.png" /></figure>

<figure><img src="image_360.png" /></figure>

volume

<figure><img src="image_361.png" /></figure>

<figure><img src="image_362.png" /></figure>

<figure><img src="image_363.png" /></figure>

height-field

<figure><img src="image_364.png" /></figure>
# Fluids amplification: flownoise & advected texture

with K.Perlin, Q.Yu, ... [SigSketch'01, SCA'03, Sig'07, TVCG'11]

1. given: coarse flow simulation

details: use texture

2. advect texture & preserve aspect

3. flownoise: swirling Perlin noise

<figure><img src="image_365.png" /></figure>

pdf
video

<figure><img src="image_366.png" /></figure>

<figure><img src="image_367.png" /></figure>

volume

<figure><img src="image_368.png" /></figure>

height-field

4. amplifying fluid: subscale turbulence

<figure><img src="image_369.png" /></figure>

* Flownoise for sub-scales

<figure><img src="image_370.png" /></figure>

→ rotations = vorticity spectrum

<figure><img src="image_371.png" /></figure>

→ Kolmogorov cascade

<figure><img src="image_372.png" /></figure>

pdf
+ video

pdf
+ video

<figure><img src="image_373.png" /></figure>
<figure><img src="image_374.png" /></figure>

High res data on demand
low geometry cost

<figure><img src="image_375.png" /></figure>

<figure><img src="image_376.png" /></figure>

<figure><img src="image_377.png" /></figure>

<figure><img src="image_378.png" /></figure>

<figure><img src="image_379.png" /></figure>

<figure><img src="image_380.png" /></figure>

<figure><img src="image_381.png" /></figure>

<figure><img src="image_382.png" /></figure>

Simu in
mix space

<figure><img src="image_383.png" /></figure>
# Galaxy Project, with RSA Cosmos & Paris-Meudon Observatory

- Real time walk-through

- ~ Hubble quality

- spectral

GigaVoxels++ & proceduralism

<figure><img src="image_384.png" /></figure>

<figure><img src="image_385.png" /><figcaption>far InfraRed</figcaption></figure>

<figure><img src="image_386.png" /><figcaption>near InfraRed</figcaption></figure>

<figure><img src="image_387.png" /><figcaption>UltraViolet</figcaption></figure>

<figure><img src="image_388.png" /></figure>

<figure><img src="image_389.png" /></figure>

video
SkyExplorer

www
Conclusion

There is hope for ultra-high complexity in real-time :-)
# Conclusion

There is hope for ultra-high complexity in real-time :-)

Future:

“converging” RT tools on GPU are cool, but don’t lose our soul:

Gaming is more challenging than prod: ( 1 / millionth of time budget... )

→ we must keep being smart !
# Conclusion

There is hope for ultra-high complexity in real-time :-)

## Future:

* "converging" RT tools on GPU are cool, but don't lose our soul:

* Gaming is more challenging than prod: ( 1 / millionth of time budget... )

* → we must keep being smart !

## So:

- don't get too picky with raw path tracing as light transport

- don't get too picky with "no, it's biased" argument

- keep our shader expressiveness

( materials, proceduralism, alt. representations )

or LOD will be forbidden

( then either perf or quality or complexity won't be ok )
# Conclusion

There is hope for ultra-high complexity in real-time :-)

## Future:

"converging" RT tools on GPU are cool, but don't lose our soul:

Gaming is more challenging than prod: ( 1 / millionth of time budget... )

→ we must keep being smart !

## So:

- don't get too picky with raw path tracing as light transport

- don't get too picky with "no, it's biased" argument

- keep our shader expressiveness

( materials, proceduralism, alt. representations )

or LOD will be forbidden

( then either perf or quality or complexity won't be ok )

PS: all presented tools are usable in prod too ;-)
Questions ?
**heap**

(*extra discussion material*)
A few things I learned
## Many tools on store !

raster (e.g., Photoshop) = grid

vs vector (e.g. Illustrator) = shape

grids: image texture. Voxels. Eulerian simu. BRDF table. SH.

vectors: GL, ps, laser. Mesh. Lagrangian simu, filaments. Lobes.

- indeed, more continuous: amount of info:

compressed data, base decomp., compr.sensing, fit, procedural, analytic

size matter:

- 4D table is cheap if interpolated low-res

- fitting or SH is not cheap if 798 coefs + transcend. math op

- opposed pro- and con- :

- no universal one: choose the appropriate

-> can be mixed :

- can change with scale or interaction length (local / long dist)

- each box can use different one:

shape, colors, shadowing & light transport, anim (space def)
# Representations

## Ones from Physics & maths:

- *Eulerian vs Lagrangian*

- *Space vs Fourier*

- *Velocity vs vorticity*

- *Point-mechanics vs Finite elements / SPH*

- *Color spaces*

- *Point mechanics / statistic mechanics / fluids / waves / spectrums*
  *energy lines*

- *Photons / waves / rays / energy*

*(don't forget validity domain & hypothesis)*
## Where to start:

- where is largest potential for improvement ?

ie, what worse part in the look / workflow ?

- best improvement reachable for each bit of extra budget ?

think "differentials everywhere": pixel=circle, occluder=slab, ray=spline.
= 1st order Taylor approx

better = F(P)+PX.grad(P), X in neighborhood. → integrate(f(Fb(P,X),X))

- what constraints ? preferences ?

time budget ? storage budget ? precision budget ? hard or sloppy ?

## Have quality estim

→ faith → weighting, transition to backup to canonical approach

## Reminder: quality = worst box, not best

so long "perfect equation" if no accurate parameter available

→ forgot nothing ? Shannon-Nyquist ok ? Large Numbers ok ?
## = continuous integral everywhere

**Points are not physical objects**
**differentials are.** $dS, dl, dw, \text{cones...} = \text{local integral}$

differential domain $\Rightarrow$ value=distrib.

→ **Distributions everywhere!**

Any scalar $\rightarrow$ distribution (colors, mask ...)

Any vector $\rightarrow$ distribution (velocity, pos, ...)

- minimal is **a lot** better than nothing

- can be cheap to have & store: Gaussian stddev, lobe width

- can be cheap to use

make well-posed many ill-posed problems

e.g., aliasing and filtering issues

is a kind of LOD (subgrid model)
# LOD everywhere!

**Reminder: metrics = pixel color**

→ LOD is not “anything simpler”

LOD ~= pre-integration over the pixel
i.e., preparation of the colorfield pixel integral giving

→ compact magic atom renderable with 1 sample

**Some LOD examples:**

- CG: roughness. brdf, glossiness. surface.

NDF,MIPmap,texture. impostors,particles.

**Physics:**

- pseudoforces: buoyancy, coupling, ...

- pseudo objects: rays & optic geometry. Surfaces & solids

- emerging numbers: Temp, Pressure.... even Velocity...

( probably even space & time )
LOD ~= pre-integration over the pixel
i.e., preparation of the colorfield pixel integral giving

Not so easy:

- non-linearity → average(f(x)) **is not** f(average(x)). same for interpolation

- correlations, non-separability → ∫fg **is not** ∫f∫g

- a cascade of wrongness & clandestine hypothesis: MIPmanning

$$I = \frac{\int_{P} L_{i}(x, \omega_{i}) C(x) \rho(n_{x}, \omega_{o}, \omega_{i}) V_{o}(x) V_{i}(x) w_{P}(x) dx}{\int_{P} V_{o}(x) w_{P}(x) dx}$$

→ Reformulate:

- other physics or math handle

- distributions. Stat momentums.

- reparameterize: log, sqrt, ^2, 1/x, equivalent set (e.e., polar)

- change space: uv → uvw, or no uv
# LOD everywhere !

**hierarchical:**

- scalewise divide and conquer

- don't forget upstream and downstream:
  frequencies in data ? frequencies once rendered ?

**different scales might be totally different problems:**

- different purpose (scenario)

- different perception (river-way / flow / details)

- different knowledge

→ different controls

→ Choose best representation
* **Philosophical key questions**

- What is an LOD ? (metrics: screen, pixels)

- What is a volume ? a surface ?

- What is a normal ? a transparency ?

- What is a sample ? a texture ?

* Sampled scales along graphics pipeline → aliasing & bias

maths (integration calculus, signal processing)

<table><thead><tr><th></th><th>geom</th><th>anim</th><th>texture</th><th>render</th></tr></thead><tbody><tr><td>geometry/material/brdf</td><td>fetch</td><td>pixel/intersect</td><td></td><td></td></tr><tr><td>vertex/polygon</td><td>vertex/voxel</td><td></td><td></td><td></td></tr><tr><td>sample span</td><td>footprint/kernel</td><td></td><td></td><td></td></tr><tr><td>mesh/vol.kernel)</td><td></td><td></td><td></td><td></td></tr><tr><td>multiscaling subgrid</td><td>LODFetch(aniso)</td><td>fragment(Abuff)</td><td></td><td>brdf</td></tr><tr><td>interpolation mag,min</td><td>subgrid, motion blur</td><td>mag,LOD</td><td></td><td>subdiv,decim</td></tr><tr><td>mag,</td><td>more blur</td><td></td><td></td><td></td></tr><tr><td>aliasing/oversmoothing</td><td>Moire,noise jaggies,noise flick,pop,backturn</td><td>peak,jaggies</td><td></td><td></td></tr></tbody></table>
## About “physical models” (in CG tongue)

> « ‘physical approach’, ‘exact’, ‘rigorous’ »

* There is no such thing like «exact» in physics

* «Physical» ≠ local (equa-diff)

* Local eqn vs macroscopic, «rigorous vs empirical»: subjective !

- mecaQ → molecules → stat phys → thermodyn → NS → hydraulics/waves/atmo(oceano)sc

- mecaQ → EM field → Huygens → geom optic → RT/radios/visibility

* **Hypothesis, conditions, limits of validity**
  ex, continuous fluids: notion of P,T, V, parcel (emergence)

* **Border conditions, parameters**
  one half of the problem is not or poorly known !

* **continuous eqn → numerical engineering: resol issues**

- subgrid models: on-going research

- sub-res → errors qualitatives and quantitatives [SAA00]

* **Tool, inspiration. But don't sacralize. Context is important !**
# What does users want ?

* **Graphist:**

– Super-spectator

– Scenario

– Expressive tools: not black box !

• Usable

• Controlable

• Intuitive & predictables parameters

• Generative space rich / useful enough

• Feedback ( → fast is useful even for SFX )

• For on scene, on shot.
→ All tools are on shell + full manual
# Studying real world

## Physics eqn vs the real Nature

- Structured vs 'blurry', known vs dirt & fluctuations
Artificial symmetries,regularities,rigidities change the
phenomenon ( buckling, natural convection, silhouette brdf)

- Clandestine hypothesis (Evil !)

- LC: borders, such a mysterious thing!
(meso-shape, param value) e.g. "river bed", "bark"

- Useless details vs uncontrolled emerging phenomena

- Simu: result change with resol [PDI-LF02]

## A.Fournier: start from real images, end with real images
(inspiration, validation)

- Observe. picture. film. touch. draw. Repeat.

- Learn how to see. Find the 'meaning' (the 'structure' of things & eye)

- Pb of subjective validation
# Reproducing the Natural Complexity

Quality real-time rendering / animation is sometime reachable

- Choose the right representation

- Be smart rather than brute force

- Don't get blinded by what you know
  → look through the window, Nature is right there ! :-)
# Alternate representations

* **Scales:** (≠ meaning, perception, goal, data, simu) → coupling different models

* **Formes, surfaces:** subjectives notions !

* **How to representer the world ?**

- What we know / what we see (shape, relief...)

- Minimalist, impressionnist approaches
    separate shape/relief, normals, shading
    Adaptive: hierarchy of modeles [Kaj85]

- **Repr. of shapes:** meshes, surfels, voxels...
    Properties ≠ : structuration, cost, filtering...

- **Decoupling:** (geom / texture space / light space / ...)
# Phenomenological simulation

* Large & detailed: physical simulation out of reach. + [PDI-LF02]

* Some priori knowledge usually exists !

- values ranges, modes, dominant phenomena...

- at least: what the purpose is, what the scene is

* **Emerging effects**: instabil., waves, folds, equilibrium...

- Equations: indirect, phys++. While predictable

- Closer too meaning, macroscopic, intuition, user language

* **Direct repr of emerging phenomenons**

Macroscopic phys (phenomenological / empirical / analytical)

* Availablemodels / analytical / direct obs. / obs. ref simu

Macroscopic primitive

- XVIIIth - XXth treasures

- revisit, make yours, invent, generalize...

- uneasy, sparsely explored...but results might pay.

<figure><img src="image_390.png" /></figure>
# Settling a problem

* **Purpose**
  (what are we aiming at ? why ?)
  goal: finalist (appli) vs constructive (fondam. tools)

* Formalize data/knowledge

* Formalize **hypothesis** (reasonned),
  **Goals** (list of requirements),
  **Criterions**

* **Proposal**
  - What already exist ? what to draw on, what's inadapted and why ?
  - Your way (explicit and justified choices)
    goals →sub-goals →details (c/ code review!)
  - Validation, + & -, perfs, limitations, comparaisons
# Texture filtering ( interp & MIP-map)

* **Clandestines hypothesis:**

- **Linearity 1:** N, courb., visibility, shadows, const params.

- **Linearity 2:** fragment = lin texture), i.e.: text = RGBA

- **Continuity:** neglect borders, holes, atlases, tiling
# Texture filtering ( interp &

## • Clandestines hypothesis:

- Linearity 1: N, courb., visibility, shadows, const params.
  → pb: micro-geometry ! Ultimate filtering !

- Linearity 2: fragment = lin, i.e.: text = RGBA
  → pb: textures for anything (Z,N,...) !

- Continuity: neglect borders, holes, atlases, tiling
  → pb: indirections !

## • Geometry filtering:

- Polygons not antialiased

- Get smaller and smaller

- Not pre-filterable

→ repr alt, model transition [Kaj85]