Avalonia solo in codiceEnglish

Volumi

Volume 5 — Grafica 3D

Stato: in scrittura

Volume 5 — Grafica 3D

Il 3D da zero: prima la matematica e un rasterizzatore scritto a mano, poi OpenGL dentro un controllo Avalonia, fino a scene vere e a quattro progetti.

30 capitoli · in scrittura (lo stato di ogni capitolo è nell'indice qui sotto). La prima parte non usa nessuna libreria: vettori e matrici con System.Numerics, trasformazioni e quaternioni, telecamera e proiezioni, mesh e normali, luce e materiali, e un rasterizzatore in software che rende chiaro che cosa fa la scheda video. La seconda parte apre OpenGL con OpenGlControlBase e Silk.NET: buffer, shader GLSL, texture, framebuffer, istanze, compute shader, e il banco che confronta WGL, ANGLE ed EGL su Windows e Linux. La terza parte porta le scene vere: telecamera orbitale, modelli OBJ e glTF, animazioni, picking, etichette, e i progetti.

Il rasterizzatore in software, con tutti i pezzi accesi.
Il rasterizzatore in software, con tutti i pezzi accesi.
Centomila cubi disegnati con le istanze.
Centomila cubi disegnati con le istanze.
262.144 particelle mosse da un compute shader.
262.144 particelle mosse da un compute shader.
Dieci milioni di punti: un clic sulla stanza, un riquadro attorno all'albero.
Dieci milioni di punti: un clic sulla stanza, un riquadro attorno all'albero.

Leggi «Prima di cominciare» Gli esempi del volume

Indice dei capitoli

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 ○

Stato dei capitoli: ✔ scritto · ✎ in bozza · ○ da scrivere.

Gli esempi del 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

Licenza MIT. Come si aprono e si avviano: la pagina Esempi. Tutti i volumi in un pacchetto solo: Download.