|
@@ -1,19 +1,21 @@
|
|
|
export default /* glsl */`
|
|
|
#ifdef USE_TRANSMISSION
|
|
|
|
|
|
- float transmissionAlpha = 1.0;
|
|
|
- float transmissionFactor = transmission;
|
|
|
- float thicknessFactor = thickness;
|
|
|
+ material.transmission = transmission;
|
|
|
+ material.transmissionAlpha = 1.0;
|
|
|
+ material.thickness = thickness;
|
|
|
+ material.attenuationDistance = attenuationDistance;
|
|
|
+ material.attenuationColor = attenuationColor;
|
|
|
|
|
|
#ifdef USE_TRANSMISSIONMAP
|
|
|
|
|
|
- transmissionFactor *= texture2D( transmissionMap, vUv ).r;
|
|
|
+ material.transmission *= texture2D( transmissionMap, vUv ).r;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef USE_THICKNESSMAP
|
|
|
|
|
|
- thicknessFactor *= texture2D( thicknessMap, vUv ).g;
|
|
|
+ material.thickness *= texture2D( thicknessMap, vUv ).g;
|
|
|
|
|
|
#endif
|
|
|
|
|
@@ -23,10 +25,12 @@ export default /* glsl */`
|
|
|
|
|
|
vec4 transmission = getIBLVolumeRefraction(
|
|
|
n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,
|
|
|
- pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
|
|
|
- attenuationColor, attenuationDistance );
|
|
|
+ pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,
|
|
|
+ material.attenuationColor, material.attenuationDistance );
|
|
|
+
|
|
|
+ material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );
|
|
|
+
|
|
|
+ totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
|
|
|
|
|
|
- totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );
|
|
|
- transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );
|
|
|
#endif
|
|
|
`;
|