Encoder deux tampons R11G11B10F en un en utilisant Y'CbCr?

8

Nous essayons d'optimiser l'éclairage en fillrate. Les puces graphiques intégrées sont très lentes dans l'accès à la mémoire.

Il existe deux tampons de lumière: un pour diffus et un pour spéculaire. Les deux utilisent le format R11G11B10F. Existe-t-il un moyen de regrouper deux tampons en un seul? Par exemple, en utilisant le modèle de couleur Y'CbCr:entrez la description de l'image ici

skif_engineer
la source
C'est pour un pipeline d'éclairage différé, non? Utilisez-vous une implémentation en mosaïque pour réduire la bande passante? En outre, avez-vous plutôt envisagé un ombrage différé carrelé ou un ombrage avant carrelé?
JarkkoL

Réponses:

5

Vous voudrez peut-être regarder le Compact YCoCg Framebuffer . Il utilise un tampon à 2 canaux pour stocker la luminance pour chaque pixel et les deux composantes de chrominance dans la moitié des pixels chacun, formant un damier. Il utilise également un filtre de suréchantillonnage sensible aux bords à la fin de l'image pour reconstruire les composantes de chrominance manquantes et les reconvertir en RVB.

Vous pouvez l'étendre à un seul tampon à 3 canaux pour stocker la luminance diffuse, la luminance spéculaire et la chrominance en damier (en supposant sur la base du diagramme de votre question qu'il suffit de stocker une seule paire de valeurs de chrominance).

Vous pouvez également envisager d'utiliser le format R10G10B10A2 à la place, sauf si vous avez vraiment besoin de la plage du format à virgule flottante. C'est la même quantité de bande passante mais vous donnera beaucoup plus de précision (R11G11B10F ne vous donne que 5 à 6 bits de mantisse par composant). De plus, vous pouvez utiliser les 2 bits d'alpha pour stocker quelques indicateurs, tels que votre indicateur diffus / spéculaire.

Nathan Reed
la source
2

Si vous êtes d'accord avec le spéculaire étant seulement blanc, vous pouvez mettre diffus et spéculaire en RGBA.

Il semble que c'est ce que fait l'unité pour son rendu différé.

Quelqu'un découvrant ce problème: http://forum.unity3d.com/threads/specular-color-based-on-light-color.134412/

Les documents qui en font mention: https://docs.unity3d.com/Manual/RenderTech-DeferredLighting.html

Alan Wolfe
la source
merci, toujours à la fois diffus et spéculaire doivent être colorés
skif_engineer