Mostra notizie nelle discussioni
Avatar
☺
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
Ma saro` divertente? Il Blog di Altg   Quando poi non ci sono vi manco, teneroni  
        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. Geek

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. A bocca aperta

EH?

Ad ehhhhhhjhhhhhhh.eh
EHH? EHHHH? EEEEHHHH? Aahhhhhhhh....‎

Pagina generata in 26 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 26 negli ultimi cinque minuti, 46 negli ultimi 15 minuti