Ho un piano esagonale infinito, generato tessellando una griglia di punti in una coppia di shader di tassellatura:
Si noti che questo è un wireframe piatto - le "ombre" sono un trucco di illuminazione:
Ora, vorrei far sembrare questo un vetro spesso e refrattivo, ma non sono sicuro di come procedere.
La prima cosa che mi è venuta in mente è
- impostare un'uniforme contenente lo "spessore" richiesto dei blocchi
- Quando si calcola l'illuminazione, utilizzare la legge di Snell per calcolare la lunghezza del percorso ottico che un raggio prenderebbe attraverso il blocco esadecimale, se fosse effettivamente spessa come dice l'uniforme "spessore", e sommare l'alfa su quella lunghezza. Ciò darebbe la trasparenza, ma non gestisce cose come la riflessione interna / TIR, ecc.
Non l'ho ancora provato, quindi non sono sicuro di quale sarebbe il risultato visivo.
Alla fine, per questo particolare livello, sto cercando di ottenere quel vetro, aspetto esagonale del pavimento usato in Tron: Legacy durante la battaglia del disco. ( Vedi questa immagine per un esempio .)
Suggerimenti?