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
    • Avatar
      ☺
      Scritto da
      altg
      utente che non utiene
      il 2014-03-12 11:44:41.0 alle 2014-03-12 11:44:41.0
      Trollate totali: 11540
      Re: Ma saro` divertente?
      C'era un errorino, comunque. E anche una perdita di tempo. Non resettava minimo e massimo dell'ultima scanline, e incrementava inutilmente i valori delle funzioni e la target pixel location (T) dopo l'ultimo pixel di una scanline.

              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 (1) {
      
                                      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;
      
                                      }
      
                                      if (++ P > E) {
      
                                              break;
      
                                      }
      
                                      T += 4;
      
                                      Q2 += this.Q [1];
                                      Q5 += this.Q [4];
                                      Q8 += this.Q [7];
      
                              }
      
                              if (++ S > this.B) {
      
                                      this.L [S - 1] = +10000;
                                      this.H [S - 1] = -10000;
      
                                      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;
      
                      }
      
              };
      


      Ora e` peFFetta. Geek
    • Avatar
      ☺
      Scritto da
      altg
      utente che non utiene
      il 2014-03-12 18:56:00.0 alle 2014-03-12 18:56:00.0
      Trollate totali: 11540
      Re: Ma saro` divertente?
      Oh, comunque una figurina da mostrare ce l'ho, non e` che il motorino grafico sia smantellato, e` solo fresco di ristrutturazione generale:

      Immagine postata dall'utente

      La scena sta essendo (sic) ricostruita, aggiungendo i vecchi elementi man mano che vengono ri-supportati. Il notevole e` la pulizia del rendering, che ora sbaglia ben pochi pixel, e quando succede e` per via dell'inevitabile bias fisso sulla profondita` dei "tappini" anteriori delle ombre. Si tratta di qualche puntino (quarto di pixel, in quadscan) scuro ogni tanto: a ingrandire la snapshot se ne nota qualcuno sui lastroni allineati per terra. Ma la precisione, adesso, la giudico piu` che accettabile.

      Ah si`, poi provero` a metterci anche la sfumatura sulle ombre (che a cercare un po' ho scoperto chiamarsi semplicemente penombra, non diffrazione ne` diffusione). Per ora devo addestrare il cerca-adiacenze a considerare la loose geometry come possibile proiettore di ombre, cosi` posso ombreggiare tutte le singole fogline della siepe e tutti i fili d'erba futuri (sperando che la quantita` di volumi d'ombra risultante non porti il browser a fanculizzarmi con un alert "oh, hai rotto il cazzo").
      • Avatar
        Scritto da
        Non Autenticato
        il 2014-03-12 19:46:33.0 alle 2014-03-12 19:46:33.0
        Re: Ma saro` divertente?
        > Oh, comunque una figurina da mostrare ce l'ho, non e` che il motorino grafico sia smantellato, e` solo fresco di ristrutturazione generale:
        >
        > Immagine postata dall'utente

        WOW! Adesso manca solo più l'antialiasing.

        > La scena sta essendo (sic) ricostruita, aggiungendo i vecchi elementi man mano che vengono ri-supportati. Il notevole e` la pulizia del rendering, che ora sbaglia ben pochi pixel, e quando succede e` per via dell'inevitabile bias fisso sulla profondita` dei "tappini" anteriori delle ombre. Si tratta di qualche puntino (quarto di pixel, in quadscan) scuro ogni tanto: a ingrandire la snapshot se ne nota qualcuno sui lastroni allineati per terra. Ma la precisione, adesso, la giudico piu` che accettabile.
        >
        > Ah si`, poi provero` a metterci anche la sfumatura sulle ombre (che a cercare un po' ho scoperto chiamarsi semplicemente penombra, non diffrazione ne` diffusione).

        (cerca su Wikipedia)

        La penombra è l'effetto, la cui causa è la diffusione dei fotoni da parte degli spigoli. Se la diffusione avvenisse a scale e lunghezze d'onda tali da generare fenomeni ondulatori (ad esempio luce che passa da un foro piccolo) avremmo la diffrazione.

        > Per ora devo addestrare il cerca-adiacenze a considerare la loose geometry come possibile proiettore di ombre, cosi` posso ombreggiare tutte le singole fogline della siepe e tutti i fili d'erba futuri (sperando che la quantita` di volumi d'ombra risultante non porti il browser a fanculizzarmi con un alert "oh, hai rotto il cazzo").

        Questo volevo sentirti dire! A bocca aperta
      • Avatar
        ☺
        Scritto da
        il 2014-03-12 21:07:31.0 alle 2014-03-12 21:07:31.0
        Trollate totali: 42885
        Re: Ma saro` divertente?
        Scritto da: altg
        > Oh, comunque una figurina da mostrare ce l'ho, non e` che il motorino grafico sia smantellato, e` solo fresco di ristrutturazione generale:

        Vedo che il tempo di rendering e' quasi di un secondo. Per me facevi prima a usare il motore di Quake, che c'avevi pure i mostri e le pistolone licchionose ....
        `"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
        • Avatar
          Scritto da
          Non Autenticato
          il 2014-03-12 21:20:39.0 alle 2014-03-12 21:20:39.0
          Re: Ma saro` divertente?
          Scritto da: Giambo
          > Scritto da: altg
          > > Oh, comunque una figurina da mostrare ce l'ho, non e` che il motorino grafico sia smantellato, e` solo fresco di ristrutturazione generale:
          >
          > Vedo che il tempo di rendering e' quasi di un secondo. Per me facevi prima a usare il motore di Quake, che c'avevi pure i mostri e le pistolone licchionose ....

          Non attacca. È quando avete messo in dubbio la futura redditività del software che si è arrabbiato. Fantasma
<softv>

Pagina generata in 78 millisecondi

Utenti attivi: 14 nell'ultimo minuto, 29 negli ultimi cinque minuti, 44 negli ultimi 15 minuti