
Recentemente, a Chaos Group liberou sua implementação do shader alSurface, criado por Anders Langlands.
Langlands é supervisor de sequências VFX, atualmente trabalhando na Weta Digital, e criou uma série de shaders para Arnold (renderizador recentemente adquirido pela Autodesk) para suprir uma necessidade que ele acreditava existir por parte dos profissionais de VFX e que o Arnold não supria sozinho. O shader mais importante escrito por ele é o alSurface (também conhecido como uber-shader) que permite criar as mais variadas superfícies como sólidas, metálicas, transparentes, reflexivas e até mesmo com SSS, como pele. Este último chamou a atenção de todos pela qualidade com a qual era capaz de reproduzir pele, e recentemente se tornou open-source, permitindo sua implementação em qualquer renderizador. Você pode saber mais sobre o alShader aqui.
A primeira implementação no V-Ray
Baseado na demanda do usuário do fórum da Chaos, Luc Begins, Vlado decidiu implementar partes do alSurface shader, especificamente as partes necessárias para reproduzir pele.
Ele leva em conta diffuse, 2 níveis de especularidade, e sub-surface scattering. Por enquanto, ainda não foram implementadas refração e translucência.
No momento, o alSurface no V-Ray está assim:
Como a motivação para este shader era a reprodução de pele, vamos examinar suas diferenças em relação a outros shaders semelhantes, como no Arnold e o VRaySkinMtl, que é bastante semelhante a ele.
Diffuse
VRaySkinMtl: As cores de Diffuse e Sub-Surface são na verdade 2 mapas diferentes e são misturados pela quantidade de diffuse.
alSurface: As cores Diffuse e Sub-Surface são definidas pelo mesmo mapa e há um mix de SSS que controla quanto a superfície é afetada pelo subsurface scattering versus quanto é definido pelo diffuse Lambertiano.
Sub-Surface Scattering
VRaySkinMtl: Há um sub-surface de 3 níveis que são igualmente misturados. Também usa o modelo padrão dipole para SSS.
alSurface: Também possui 3 níveis de SSS, mas tem controles de contribuição separados para cada um. Também oferece diversos modos de SSS. Vlado implementou dois deles para a versão V-Ray do shader. Difusão, que preserva mais detalhes se comparado ao modo padrão dipole, e Direcional, que permite uma aproximação de mapas Single Scatter para ainda mais preservação de detalhes.
Specular
VRaySkinMtl: Usa um modelo especular de 2 rebatimentos com um reflexo nítido e amplo. Também usa Phong como BRDF reflexivo. Este modelo provou trabalhar bem em várias situações, mas em ângulos mais agudos, baseado na forma como corta o SSS, pode causar escurecimentos. Isso ocorre porque o efeito Fresnel é calculado como uma função do ângulo entre a direção de visualização e a normal da superfície, ignorando as direções das quais a luz ilumina a superfície.
alSurface: Também usa um modelo especular de 2 rebatimentos. Entretanto, ao invés de usar um BRDF suave como Phong ou Blinn, usa um microfacetado. O efeito Fresnel é calculado como parte dos cálculos do BRDF (“glossy Fresnel”) e leva em conta a direção da visualização, a normal da superfície e as direções das luzes. O usuário pode escolher entre os modelos de BRDF GGX e Beckmann. Baseado na natureza da micro-facetagem, pode evitar o escurecimento a ângulos muito agudos através de retro-reflexão. Adicionalmente, não cobre o SSS nos mesmos ângulos.
Outras diferenças notáveis
Os valores de IOR usados em cada shader são diferentes baseado em como o cálculo do fresnel é feito.Portanto, se o usuáreo utilizar o mesmo valor para ambos shaders, o alSurface sairá mais reflexivo.
O VRaySkinMtl usa glossiness, então valores altos são mais brilhantes; alSurface usa roughness, de forma que valores altos são mais difusos. Se um mapa for usado em um, deverá ser invertido para poder ser utilizado no outro.
O VRaySkinMtl mistura o diffuse, o que significa que um valor de 1 é igual a 100% diffuse. o alSurface mistura SSS, significando que um valor de 1 é igual a 100% SSS. Se um mapa for utilizado, como o Single Scatter Map, o mesmo deverá ser invertido antes de ser aplicado.
Onde conseguir o alSurface shader
Você pode baixá-lo diretamente do nosso GuitHub.
Para instalar no 3ds Max, copie o arquivo .dlt para a pasta [maxroot]\plugins\vrayplugins. Um novo material chamado VRayALMtl irá aparecer.
Para instalar no Maya, copie o arquivo vray_BRDFALSurface.dll para a pasta onde estão os outros plugins V-Ray (por exemplo, C:\program files\autodesk\maya2016\vray\vrayplugins) ou adicione o path para o arquivo vray_BRDFALSurface.dll às environment variables VRAY_FOR_MAYA2016_PLUGINS_x64 and VRAY_PLUGINS_x64 . Você irá encontrar o novo material em Create > V-Ray > Create from V-Ray plugin > BRDF material e ele estará disponível na lista como BRDFALSurface.