Scritto da
altg
utente che non utiene
il 2014-03-12 01:38:55.0 alle 2014-03-12 01:38:55.0
Trollate totali: 11540
Rasterizer.prototype.fillPlainClear = function () { var
S = this.T,
P = this.L [S] - 1,
E = this.H [S] + 1,
L = this.w * S,
T = L + 4 * P,
Q2 = this.Q [2] - this.Q [1],
Q5 = this.Q [5] - this.Q [4],
Q8 = this.Q [8] - this.Q [7],
e;
while (1) {
while (P <= E) {
if (Q2 <= 0 && Q5 <= 0 && Q8 <= 0) {
this.D [T] = this.z;
this.D [T + 1] = this.i;
this.R [T] = this.r;
this.R [T + 1] = this.g;
this.R [T + 2] = this.b;
}
P += 1;
T += 4;
Q2 += this.Q [1];
Q5 += this.Q [4];
Q8 += this.Q [7];
}
if (++ S > this.B) {
return;
}
P = this.L [S] - 1;
E = this.H [S] + 1;
L = L + this.w;
e = this.L [S] - this.L [S - 1];
T = L + 4 * P;
this.Q [2] += e * this.Q [1] - this.Q [0];
this.Q [5] += e * this.Q [4] - this.Q [3];
this.Q [8] += e * this.Q [7] - this.Q [6];
Q2 = this.Q [2] - this.Q [1];
Q5 = this.Q [5] - this.Q [4];
Q8 = this.Q [8] - this.Q [7];
this.L [S - 1] = +10000;
this.H [S - 1] = -10000;
}
};
Che c'e` di divertente?
Scrivere coi nomi delle variabili.

Bah... comunque, piu` che altro spiega la roba che mi sta tenendo impegnato e senza aggiornamenti in forma di snapshots su Cydonia. Sto ricostruendo il rasterizzatore e i pixel shaders perche` il meshing era imperfetto. Al costo di tre incrementi per pixel (i "Q") sono passato alla risoluzione delle funzioni dei bordi (sistema di disequazioni). Il pixel e` nel triangolo quando i segni delle funzioni dei tre lati del triangolo, in un dato punto (Q2, Q5, Q8), sono concordi e negativi (o nulli, anche se serve a coprire bordi infinitesimali in casi molto particolari). In questo modo i triangoli adiacenti s'incastrano pixel per pixel e permettono aggiornamenti incrementali dello stencil senza artefatti dovuti a passaggi doppi o mancanze di copertura. Per individuare comunque dei minimi e massimi indicativi ho tenuto comunque il Bresenham, che ha un errore massimo di +/- un pixel, sicche` i pixel shaders partono incondizionatamente da un pixel piu` a sinistra del minimo e arrivano un pixel piu` a destra. Ma vabbe', e` una lunga storia (anche triste, visto che e` stata quanto mai pallosa).
Pero` l'autotrollata nel frammento di codice che disegna i cieli di sfondo meritava di essere vista.
-
-
■ @ 2014-03-12 18:56:00.0 di altg
-
■ @ 2014-03-12 21:07:31.0 di Giambo
-
■ @ 2014-03-12 21:20:39.0 di Non Autenticato
-
-
■ @ 2014-03-12 19:46:33.0 di Non Autenticato
-
-
■ @ 2014-03-12 11:44:41.0 di altg
-