Avalonia Code OnlyItaliano

Volumes

Volume 5 — 3D Graphics

Status: being written

Volume 5 — 3D Graphics

3D from scratch: first the mathematics and a hand-written rasterizer, then OpenGL inside an Avalonia control, up to real scenes and four projects.

30 chapters · being written (the status of each chapter is in the table of contents below). The first part uses no library at all: vectors and matrices with System.Numerics, transforms and quaternions, camera and projections, meshes and normals, light and materials, and a software rasterizer that makes clear what the graphics card does. The second part opens OpenGL with OpenGlControlBase and Silk.NET: buffers, GLSL shaders, textures, framebuffers, instancing, compute shaders, and a bench comparing WGL, ANGLE and EGL on Windows and Linux. The third part brings real scenes: orbit camera, OBJ and glTF models, animation, picking, labels, and the projects.

The software rasterizer, with every piece switched on.
The software rasterizer, with every piece switched on.
A hundred thousand cubes drawn with instancing.
A hundred thousand cubes drawn with instancing.
262,144 particles moved by a compute shader.
262,144 particles moved by a compute shader.
Ten million points: a click on the room, a box around the tree.
Ten million points: a click on the room, a box around the tree.

Read «Before you begin» The examples of the volume

Table of contents

The table of contents is in Italian, as the volume is written in Italian; the English edition follows.

Il 3D era un volume solo, con OpenGL, Vulkan e Direct3D: 47 capitoli, circa 680 pagine, oltre il limite di 480. Si divide per libreria. Questo volume insegna il 3D da zero con OpenGL, che gira dappertutto e si apre direttamente in un controllo di Avalonia; il volume 6 scende in Vulkan e Direct3D, le interfacce esplicite, e confronta le tre strade con misure vere.

ParteCapitoliPagine
Prima di cominciare—8
Prima · Il 3D senza librerieV.1–V.795
Seconda · OpenGLV.8–V.20175
Terza · Scene vereV.21–V.2680
ProgettiV.27–V.3055
AppendiciA–C30
Totale30 capitoli≈ 445

Prima di cominciare ✔

Prefazione · la collana · che cosa serve dei volumi 2, 3 e 4 (il controllo che disegna, il thread del disegno, Skia per le texture e il testo) · la scheda video del libro e come provare senza · le librerie e le licenze.

Parte prima — Il 3D senza librerie

La matematica e la pipeline, prima di qualunque libreria: tutto quello che serve anche ai volumi 6, con System.Numerics e un rasterizzatore scritto a mano.

  • V.1 Il 3D in un'applicazione Avalonia ✔ — che cosa si può fare e con che cosa: OpenGL, Vulkan, Direct3D, Metal; come Avalonia mette la scheda video dentro un controllo; i due volumi del 3D e il percorso di lettura.
  • V.2 Vettori e matrici con System.Numerics ✔ — Vector3, Matrix4x4, prodotto scalare e vettoriale; l'ordine delle moltiplicazioni (vettori riga di .NET, vettori colonna di GLSL), il primo inciampo di tutti.
  • V.3 Trasformazioni e quaternioni ✔ — traslare, ruotare, scalare; angoli di Eulero e il blocco cardanico; Quaternion e l'interpolazione; la gerarchia di oggetti.
  • V.4 Telecamera e proiezioni ✔ — la vista, la proiezione prospettica e ortografica; il volume visibile; lo spazio di ritaglio di OpenGL (−1…1) e di Direct3D e Vulkan (0…1); la precisione della profondità.
  • V.5 Mesh: vertici, triangoli, normali ✔ — cubo, sfera, cilindro, superficie da una funzione; indici; il verso dei triangoli e la faccia nascosta; normali per faccia e per vertice.
  • V.6 Luce e materiali ✔ — Lambert, Phong, Blinn-Phong; luci direzionali, puntiformi, a cono; colori in luce lineare e sRGB.
  • V.7 Un rasterizzatore in software ✔ — la pipeline scritta a mano in C# su una bitmap di Skia: trasformare, ritagliare, riempire i triangoli, il buffer di profondità. Lento, misurato, e la scheda video diventa chiara.

Parte seconda — OpenGL

  • V.8 OpenGL e la scheda video ✔ — la pipeline programmabile, le versioni, OpenGL ES; ANGLE, il traduttore che Avalonia usa su Windows; che cosa vuol dire «contesto».
  • V.9 OpenGlControlBase di Avalonia ✔ — il controllo che apre un contesto: OnOpenGlInit, OnOpenGlRender, OnOpenGlDeinit; su quale thread; GlInterface e Silk.NET.OpenGL sopra lo stesso contesto; il primo triangolo.
  • V.10 Buffer e layout dei vertici ✔ — VBO, VAO, EBO; interlacciati o separati; aggiornare i dati senza fermare la scheda video.
  • V.11 GLSL ✔ — vertex e fragment shader; compilare, collegare, leggere gli errori; #version per OpenGL e per OpenGL ES; dove finiscono le differenze fra le schede.
  • V.12 Uniform, attributi, matrici ✔ — passare la telecamera agli shader; blocchi di uniform; quanto costa cambiarli a ogni oggetto.
  • V.13 Texture e campionatori ✔ — caricare con Skia (volume 4), mipmap, filtri, ripetizione; texture sRGB; l'atlante.
  • V.14 Luci in GLSL ✔ — Phong e Blinn-Phong per pixel; più luci; materiali; normal map.
  • V.15 Profondità, trasparenza, multisampling ✔ — il buffer di profondità, l'ordine degli oggetti trasparenti, l'antialiasing con MSAA; il prezzo misurato di ognuno.
  • V.16 Framebuffer e disegno fuori schermo ✔ — disegnare in una texture; post-elaborazione; la foto del 3D per le figure del libro.
  • V.17 Instancing ✔ — centomila oggetti in una chiamata; i dati per istanza; misure.
  • V.18 Ombre ✔ — la shadow map, i suoi difetti (acne, peter panning) e i rimedi.
  • V.19 Compute shader ✔ — OpenGL 4.3, dove c'è: calcolare sulla scheda video; dove manca (ANGLE, OpenGL ES 3.0, macOS fermo a 4.1) e come ripiegare.
  • V.20 OpenGL su Windows, Linux e macOS ✔ — ANGLE contro WGL, GLX ed EGL, X11 e Wayland, macOS che lo sconsiglia; le stesse misure su tre sistemi.

Parte terza — Scene vere

  • V.21 Telecamera orbitale e interazione ✔ — orbita, zoom, spostamento con mouse, rotella e tastiera; la telecamera che non si capovolge.
  • V.22 Modelli OBJ e glTF ✔ — leggere un OBJ a mano; glTF con SharpGLTF: mesh, materiali, texture, gerarchie.
  • V.23 Animare oggetti 3D ✔ — fotogrammi chiave, interpolazione con i quaternioni, il passo fisso del volume 3.
  • V.24 Picking e ray casting ✔ — dal clic al raggio; intersezione con triangoli e scatole; il colore come identificatore.
  • V.25 Testo ed etichette nel 3D ✔ — un atlante di glifi disegnato con Skia; etichette che guardano sempre la telecamera.
  • V.26 Misurare il 3D ○ — i tempi della scheda video con le query; RenderDoc per vedere un fotogramma; dove va il tempo.

Progetti

  • V.27 Visualizzatore di modelli 3D ✔ — glTF, telecamera orbitale, luci, griglia, selezione.
  • V.28 Superficie di misure in tempo reale ✔ — una griglia di dati che cambia 60 volte al secondo, colorata per valore.
  • V.29 Grafico 3D scientifico ✔ — assi, tacche ed etichette nello spazio, come i grafici del volume 3.
  • V.30 Nuvola di punti ✔ — milioni di punti con l'instancing, selezione con il picking.

Appendici

A. Gli inciampi del 3D ○ · B. Riferimento rapido di OpenGL e GLSL ○ · C. Glossario ○

Chapter status: ✔ written · ✎ draft · ○ to be written.

The examples of the volume

Volume 5 — Grafica 3D volume 5

Gli esempi di 29 capitoli (720 file) e la libreria RAVAL c8a811e, licenza MIT. Libro c73d832b, 6 novembre 2026.

Esempi-Volume5.zip 1.2 MB · italianoSHA-256 ba5e164fbc5f9e33698f43a0866f313387417419f7ca98df332d32842c6167fd

MIT license. How to open and run them: the Examples page. All the volumes in one package: Download.