|
|
@@ -380,7 +380,7 @@ ${ flowData.code }
|
|
|
/**
|
|
|
* Generates the GLSL snippet that reads a single texel from a texture without sampling or filtering.
|
|
|
*
|
|
|
- * @param {Texture} texture - The texture.
|
|
|
+ * @param {?Texture} texture - The texture.
|
|
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
|
* @param {string} uvIndexSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
|
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
|
@@ -390,28 +390,42 @@ ${ flowData.code }
|
|
|
*/
|
|
|
generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet, offsetSnippet, levelSnippet = '0' ) {
|
|
|
|
|
|
+ let snippet;
|
|
|
+
|
|
|
if ( depthSnippet ) {
|
|
|
|
|
|
if ( offsetSnippet ) {
|
|
|
|
|
|
- return `texelFetchOffset( ${ textureProperty }, ivec3( ${ uvIndexSnippet }, ${ depthSnippet } ), ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
|
+ snippet = `texelFetchOffset( ${ textureProperty }, ivec3( ${ uvIndexSnippet }, ${ depthSnippet } ), ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
|
|
|
|
- }
|
|
|
+ } else {
|
|
|
|
|
|
- return `texelFetch( ${ textureProperty }, ivec3( ${ uvIndexSnippet }, ${ depthSnippet } ), ${ levelSnippet } )`;
|
|
|
+ snippet = `texelFetch( ${ textureProperty }, ivec3( ${ uvIndexSnippet }, ${ depthSnippet } ), ${ levelSnippet } )`;
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if ( offsetSnippet ) {
|
|
|
|
|
|
- return `texelFetchOffset( ${ textureProperty }, ${ uvIndexSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
|
+ snippet = `texelFetchOffset( ${ textureProperty }, ${ uvIndexSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ snippet = `texelFetch( ${ textureProperty }, ${ uvIndexSnippet }, ${ levelSnippet } )`;
|
|
|
|
|
|
}
|
|
|
|
|
|
- return `texelFetch( ${ textureProperty }, ${ uvIndexSnippet }, ${ levelSnippet } )`;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( texture !== null && texture.isDepthTexture ) {
|
|
|
+
|
|
|
+ snippet += '.x';
|
|
|
|
|
|
}
|
|
|
|
|
|
+ return snippet;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|