|
|
@@ -20,6 +20,7 @@ import { screenSize } from '../display/ScreenNode.js';
|
|
|
import { viewportMipTexture } from '../display/ViewportTextureNode.js';
|
|
|
import { textureBicubic } from '../accessors/TextureBicubic.js';
|
|
|
import { Loop } from '../utils/LoopNode.js';
|
|
|
+import { BackSide } from '../../constants.js';
|
|
|
|
|
|
//
|
|
|
// Transmission
|
|
|
@@ -67,11 +68,14 @@ const applyIorToRoughness = /*@__PURE__*/ Fn( ( [ roughness, ior ] ) => {
|
|
|
]
|
|
|
} );
|
|
|
|
|
|
-const singleViewportMipTexture = /*@__PURE__*/ viewportMipTexture();
|
|
|
+const viewportBackSideTexture = /*@__PURE__*/ viewportMipTexture();
|
|
|
+const viewportFrontSideTexture = /*@__PURE__*/ viewportMipTexture();
|
|
|
|
|
|
-const getTransmissionSample = /*@__PURE__*/ Fn( ( [ fragCoord, roughness, ior ] ) => {
|
|
|
+const getTransmissionSample = /*@__PURE__*/ Fn( ( [ fragCoord, roughness, ior ], { material } ) => {
|
|
|
|
|
|
- const transmissionSample = singleViewportMipTexture.uv( fragCoord );
|
|
|
+ const vTexture = material.side == BackSide ? viewportBackSideTexture : viewportFrontSideTexture;
|
|
|
+
|
|
|
+ const transmissionSample = vTexture.uv( fragCoord );
|
|
|
//const transmissionSample = viewportMipTexture( fragCoord );
|
|
|
|
|
|
const lod = log2( screenSize.x ).mul( applyIorToRoughness( roughness, ior ) );
|