2010-09-08 20 views
1

J'essaie de produire un shader pour reproduire un objet en plastique blanc avec une lumière colorée à l'intérieur. Soit en ayant un shader qui sera translucide et si je mets une lumière à l'intérieur de l'objet, la lumière apparaîtra à travers ou en ayant un shader qui simule l'effet d'une lumière à l'intérieur.HLSL Shader en plastique translucide

L'effet im va pour est un peu comme une lumière passant par un abat-jour de la lampe similaire à ces images:

alt text alt text alt text

Idéalement je serais en mesure de contrôler la force et la couleur du la lumière pour le faire pulser et tourner à travers de belles couleurs flur brillantes

Bien que je ne sache pas par où commencer!

Ma question est: est-ce que quelqu'un connaît les techniques que je devrais rechercher pour être capable de produire un tel shader ou avoir un exemple de shader identique/similaire que je peux utiliser comme point de départ? Ou même si vous voulez fournir un shader qui pourrait faire le travail

+1

Eh bien, je n'ai aucune idée de la façon de le faire, mais l'affichage d'une image du résultat que vous voulez aiderait je suppose! – Peter

+0

J'ai entendu dire qu'un blinn shader pourrait ressembler à ce que je cherche? mais si oui, comment est-ce différent? – Tristan

+0

L'ombrage blinn est une approximation plus rapide de l'ombrage Phong, qui est utilisé pour la réflexion spéculaire. Vous pouvez l'utiliser pour des réflexions de surface en plus de quelque chose d'autre, mais Blinn en lui-même ne vous donnera pas la transmission de lumière diffuse que vous recherchez. – LarsH

Répondre

4

Vous voudrez peut-être faire des recherches sur Subsurface Scattering pour vous faire une idée de la façon de recréer ce genre d'effet. La diffusion souterraine est importante pour rendre la peau réaliste, mais dans ce cas vous avez généralement affaire à une lumière devant ou derrière un objet translucide plutôt qu'à l'intérieur. Les mêmes principes de base s'appliquent, mais certains des trucs et astuces utilisés pour les approximations de diffusion souterraine en temps réel peuvent ne pas fonctionner pour votre cas.

+0

Cela ressemble à la route à suivre! J'ai regardé quelques exemples de diffusion Subsurface et je pense qu'avec un peu de travail ce sera parfait! Merci – Tristan

2

Belles photos. Il semble que le type de plastique translucide que vous utilisez peut faire une grande différence. Ce que je vois, c'est que la luminosité du plastique à chaque point est basée sur l'angle entre le rayon de la source lumineuse jusqu'à ce point, et la surface normale à ce point. (L'angle de l'observateur n'est pas pertinent.)

Lorsque le vecteur de la source de lumière interne au point de surface est presque parallèle au vecteur normal de surface, le point de surface est brillant; quand ils sont presque perpendiculaires l'un à l'autre, le point de la surface est sombre. Essayez donc d'utiliser le produit scalaire de ces deux vecteurs. Ne pas oublier de normaliser. En d'autres termes, il s'agit essentiellement d'une réflexion diffuse, sauf que vous ajoutez l'effet des sources de lumière internes (transmises) à l'effet de sources de lumière externes (réfléchies). Voir Lambertian_reflectance comme point de départ.

Vous pouvez également ajouter un peu de réflexion spéculaire par-dessus.

La troisième image est plus complexe: je pense qu'elle montre les ombres des surfaces intérieures sur les surfaces extérieures.