Esistono molti linguaggi di shading basati su GLSL o HLSL: quali problemi risolvono in genere e quali utili progressi fanno?


8

Accidenti, quello era un titolo lungo.

Ad ogni modo, sto ponendo questa domanda, poiché mi piace pensare a varie cose, e mi è venuto in mente che non ci sono davvero semplici livelli open source sopra GLSL, anche se solo per aggiungere cose semplici come include o funzioni di uso comune.

Come una sorta di ricerca, sto ponendo questa domanda, dal momento che la mia consapevolezza di tali lingue è a dir poco minuscola - conosco il linguaggio di ombreggiatura di bgfx e ShaderLab di Unity, ma non so davvero cosa realizzano - o perché - essere un novizio relativo alla computer grafica.

In alternativa, quale sarebbe la tua lista dei desideri per un linguaggio di ombreggiatura come questo? Il mio finora include inclusioni, una certa compatibilità tra le versioni, input "nascosti" opzionali che consentono di accedere facilmente alle trame con offset dei pixel, o dimensioni delle immagini, ecc. E probabilmente passano - per esempio, sfocatura gaussiana a due passaggi.

Pensieri?


4
Sembra più una discussione sul forum che una domanda specifica. Questo sito funziona in modo ottimale con domande a cui è possibile rispondere con un'unica risposta concreta. La parte "qual è la tua lista dei desideri" non è sicuramente adatta per un sito SE.
Dan Hulme

1
Puoi venire alla cornell box della nostra chatroom e dare il via a una discussione
maniaco del cricchetto

Risposte:


2

Penso che sia giusto dire che la ragione per cui ci sono così tante varianti di nicchia di GLSL / HLSL / Cg / whatnot è perché nessun linguaggio di programmazione è né sarà mai uguale a tutti gli strumenti. Problemi diversi richiedono strumenti diversi, quindi a volte vale la pena sviluppare uno strumento personalizzato se si ripaga a lungo termine.

Stock GLSL è di per sé praticamente inutilizzabile. Non ha nemmeno acquisito molta stabilità tra le versioni, quindi per un programma destinato a più di una versione OpenGL, una sorta di pre-elaborazione è d'obbligo. HLSL è un po 'più stabile tra le versioni, ma ancora una volta, se si sceglie come target più di una versione D3D, sarà necessario un po' di lavoro per ottenere una buona portabilità.

Il genere di cose che la gente di solito fa è più o meno quello che hai detto, come l'aggiunta di supporto per funzionalità di programmazione di base come moduli e sintassi uniforme tra le versioni, o persino portabilità attraverso diverse API (GL / D3D) senza dover riscrivere il codice shader. Le cose più sofisticate includono sistemi di materiali completi o cose come la generazione al volo di programmi shader .

I linguaggi di ombreggiatura probabilmente miglioreranno e diventeranno più generici in futuro, incorporando cose che oggi sono comunemente lanciate a mano come caratteristiche principali. La nuova architettura GCN ne è un segno. Quindi i linguaggi di shading saranno più utilizzabili da subito, ma le soluzioni personalizzate non andranno mai via perché c'è solo così tanto che puoi generalizzare.


Sono curioso - quali lingue come questa sono là fuori? So che ci sono quelli specifici del motore come i sistemi shader di Unity o UE4, oltre ad alcune cose accademiche di ricerca come Spark , ma non sono a conoscenza di nient'altro nell'uso attuale in questo spazio.
Nathan Reed il

@NathanReed, probabilmente il Metal di Apple è uno dei più notevoli, per ora, ma non ho esaminato molti dettagli ...
glampert

Oh va bene. Il metallo non è al di sopra di HLSL o GLSL; è un linguaggio di shading primario per le GPU Apple che si compila direttamente nel microcodice HW (credo tramite un back-end LLVM proprietario).
Nathan Reed,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.