pbrBlockAlbedoOpacity.fx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. struct albedoOpacityOutParams
  2. {
  3. vec3 surfaceAlbedo;
  4. float alpha;
  5. };
  6. #define pbr_inline
  7. void albedoOpacityBlock(
  8. const in vec4 vAlbedoColor,
  9. #ifdef ALBEDO
  10. const in vec4 albedoTexture,
  11. const in vec2 albedoInfos,
  12. #endif
  13. #ifdef OPACITY
  14. const in vec4 opacityMap,
  15. const in vec2 vOpacityInfos,
  16. #endif
  17. #ifdef DETAIL
  18. const in vec4 detailColor,
  19. const in vec4 vDetailInfos,
  20. #endif
  21. out albedoOpacityOutParams outParams
  22. )
  23. {
  24. // _____________________________ Albedo Information ______________________________
  25. vec3 surfaceAlbedo = vAlbedoColor.rgb;
  26. float alpha = vAlbedoColor.a;
  27. #ifdef ALBEDO
  28. #if defined(ALPHAFROMALBEDO) || defined(ALPHATEST)
  29. alpha *= albedoTexture.a;
  30. #endif
  31. #ifdef GAMMAALBEDO
  32. surfaceAlbedo *= toLinearSpace(albedoTexture.rgb);
  33. #else
  34. surfaceAlbedo *= albedoTexture.rgb;
  35. #endif
  36. surfaceAlbedo *= albedoInfos.y;
  37. #endif
  38. #ifdef VERTEXCOLOR
  39. surfaceAlbedo *= vColor.rgb;
  40. #endif
  41. #ifdef DETAIL
  42. surfaceAlbedo.rgb = surfaceAlbedo.rgb * (saturate(vec3(detailColor.r) + vDetailInfos.y));
  43. #endif
  44. #define CUSTOM_FRAGMENT_UPDATE_ALBEDO
  45. // _____________________________ Alpha Information _______________________________
  46. #ifdef OPACITY
  47. #ifdef OPACITYRGB
  48. alpha = getLuminance(opacityMap.rgb);
  49. #else
  50. alpha *= opacityMap.a;
  51. #endif
  52. alpha *= vOpacityInfos.y;
  53. #endif
  54. #ifdef VERTEXALPHA
  55. alpha *= vColor.a;
  56. #endif
  57. #if !defined(SS_LINKREFRACTIONTOTRANSPARENCY) && !defined(ALPHAFRESNEL)
  58. #ifdef ALPHATEST
  59. if (alpha < ALPHATESTVALUE)
  60. discard;
  61. #ifndef ALPHABLEND
  62. // Prevent to blend with the canvas.
  63. alpha = 1.0;
  64. #endif
  65. #endif
  66. #endif
  67. outParams.surfaceAlbedo = surfaceAlbedo;
  68. outParams.alpha = alpha;
  69. }