| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- struct albedoOpacityOutParams
- {
- vec3 surfaceAlbedo;
- float alpha;
- };
- #define pbr_inline
- void albedoOpacityBlock(
- const in vec4 vAlbedoColor,
- #ifdef ALBEDO
- const in vec4 albedoTexture,
- const in vec2 albedoInfos,
- #endif
- #ifdef OPACITY
- const in vec4 opacityMap,
- const in vec2 vOpacityInfos,
- #endif
- #ifdef DETAIL
- const in vec4 detailColor,
- const in vec4 vDetailInfos,
- #endif
- out albedoOpacityOutParams outParams
- )
- {
- // _____________________________ Albedo Information ______________________________
- vec3 surfaceAlbedo = vAlbedoColor.rgb;
- float alpha = vAlbedoColor.a;
- #ifdef ALBEDO
- #if defined(ALPHAFROMALBEDO) || defined(ALPHATEST)
- alpha *= albedoTexture.a;
- #endif
- #ifdef GAMMAALBEDO
- surfaceAlbedo *= toLinearSpace(albedoTexture.rgb);
- #else
- surfaceAlbedo *= albedoTexture.rgb;
- #endif
- surfaceAlbedo *= albedoInfos.y;
- #endif
- #ifdef VERTEXCOLOR
- surfaceAlbedo *= vColor.rgb;
- #endif
- #ifdef DETAIL
- surfaceAlbedo.rgb = surfaceAlbedo.rgb * (saturate(vec3(detailColor.r) + vDetailInfos.y));
- #endif
- #define CUSTOM_FRAGMENT_UPDATE_ALBEDO
- // _____________________________ Alpha Information _______________________________
- #ifdef OPACITY
- #ifdef OPACITYRGB
- alpha = getLuminance(opacityMap.rgb);
- #else
- alpha *= opacityMap.a;
- #endif
- alpha *= vOpacityInfos.y;
- #endif
- #ifdef VERTEXALPHA
- alpha *= vColor.a;
- #endif
- #if !defined(SS_LINKREFRACTIONTOTRANSPARENCY) && !defined(ALPHAFRESNEL)
- #ifdef ALPHATEST
- if (alpha < ALPHATESTVALUE)
- discard;
- #ifndef ALPHABLEND
- // Prevent to blend with the canvas.
- alpha = 1.0;
- #endif
- #endif
- #endif
- outParams.surfaceAlbedo = surfaceAlbedo;
- outParams.alpha = alpha;
- }
|