notJustCode.it
 
\\ Home : Articoli
Non photo realistic rendering: ink & pen
Di RobyDx (del 21/01/2007 @ 12:20:59, in Shader Library, linkato 2185 volte)

Questo è uno shader creato da me che vuole simulare il tratto chiaro, scuro fatto con la china. L'effetto sfrutta numerosi passaggi per essere realizzato. Il primo passo è un rendering multiplo su tre texture. Nella prima viene renderizzata la scena normale illuminata in perPixel lighting, sulla seconda il depth space e sulla terza il normal space. Il depth space ed il normal space sono il rendering della scena in cui però il colore è utilizzato come informazione. Il depth compare come una scena in sfumature di grigio in cui più il colore è vicino al bianco e più la scena è lontana. Il normal space invece usa come colore la normale. Questi due spazi vengono utilizzati per generare il contorno tramite filtro sobel. Il filtro sobel è una operazione applicata ad un pixel che tramite quelli ad esso vicino permette di calcolare il contorno di una immagine con una buona precisione sfruttando le differenze di colore. Infatti dove vi è un veloce cambio di gradazione di grigio significa che vi è un bordo, idem attraverso le normali, dove vi è un cambio veloce di colore significa che siamo di fronte ad uno spigolo. I successivi 2 passaggi sono l'applicazione del filtro sobel a queste 2 texture, fatte separate perchè occorre leggere la texture 8 volte e quindi in totale 16 che erano troppe insieme alle istruzioni aritmetiche. Il passaggio 2 e 3 generano il contorno del depth space e del normal space. Il terzo passaggio fonde i 2 contorni ed applica un filtro tap5 che allarga il bordo ammorbidendolo prendendo per ogni pixel quello più scuro tra i 4 vicini e se stesso. Ora abbiamo 2 texture da fondere: la prima con il rendering normale e la seconda con il contorno. Ad essa aggiungo una texture volumetrica che contiene 4 sfumature in bianco e nero in penna grafica (banalmente generate con photoEditor). Ogni sfumatura è una bitmap quadrata che viene inserita dal più scuro al più chiaro. Nell'ultimo passaggio il colore della texture con il rendering normale viene convertito in grigio facendo la media tra i colori. Il colore viene usata come profondità per la texture con le sfumature e moltiplicata per il colore originale della scena e per il contorno. Il risultato è quello in figura.

Esempio Shader Ink & Pen

  • VB.Net 2003 o framework 1.1
  • linguaggio usato: HLSL
  • requisiti hardware: VS_2_0, PS_2_0, multiple render target
  • funziona anche in reference

    OutLine.zip 2.4 Mb

  • Articolo Articolo  Storico Storico Stampa Stampa
    I commenti sono disabilitati.
    "Technology can do little for people who have nothing to say."

    Eric Auchard


    Cerca per parola chiave
     

    Titolo
    Articoli (4)
    C++ (4)
    Direct3D10 (30)
    Direct3D11 (20)
    DirectX9 (82)
    DotNet (10)
    English (9)
    FanGames (22)
    ManagedDX11 (2)
    Materiale Utile (4)
    News (39)
    Shader Library (12)
    SharpDX (1)
    Software (25)
    Tecnologia (19)
    Varie (9)

    Gli interventi più cliccati

    Ultimi commenti:
    If you wish to retai...
    23/05/2013 @ 13:07:45
    Di chanel outlet
    You deficit of self-...
    23/05/2013 @ 13:07:13
    Di cartier watches uk
    Reinforce your own l...
    23/05/2013 @ 13:06:37
    Di replica watches
    Whenever you"re shiv...
    23/05/2013 @ 13:06:11
    Di swiss replica watches
    It's likely you have...
    23/05/2013 @ 13:05:02
    Di chanel handbags
    Cheap automobile ins...
    23/05/2013 @ 13:04:28
    Di replica watches

    Titolo
    Con quale tecnologia state realizzando o avete intenzione di realizzare i vostri progetti?

     DirectX11
     DirectX10
     DirectX9
     XNA
     DirectX8 o Precedenti
     OpenGL
     Motori grafici già pronti
     Altro

    Titolo
    Umorismo (17)

    Le fotografie più cliccate



    Ci sono 537 persone collegate
    Sono state visualizzate  pagine

    22/11/2024 @ 10:49:56
    script eseguito in 47 ms