最新代码
This commit is contained in:
46
public/sdk/three/jsm/nodes/utils/MaxMipLevelNode.js
Normal file
46
public/sdk/three/jsm/nodes/utils/MaxMipLevelNode.js
Normal file
@ -0,0 +1,46 @@
|
||||
import UniformNode from '../core/UniformNode.js';
|
||||
import { NodeUpdateType } from '../core/constants.js';
|
||||
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
||||
import { addNodeClass } from '../core/Node.js';
|
||||
|
||||
class MaxMipLevelNode extends UniformNode {
|
||||
|
||||
constructor( textureNode ) {
|
||||
|
||||
super( 0 );
|
||||
|
||||
this.textureNode = textureNode;
|
||||
|
||||
this.updateType = NodeUpdateType.FRAME;
|
||||
|
||||
}
|
||||
|
||||
get texture() {
|
||||
|
||||
return this.textureNode.value;
|
||||
|
||||
}
|
||||
|
||||
update() {
|
||||
|
||||
const texture = this.texture;
|
||||
const images = texture.images;
|
||||
const image = ( images && images.length > 0 ) ? ( ( images[ 0 ] && images[ 0 ].image ) || images[ 0 ] ) : texture.image;
|
||||
|
||||
if ( image && image.width !== undefined ) {
|
||||
|
||||
const { width, height } = image;
|
||||
|
||||
this.value = Math.log2( Math.max( width, height ) );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default MaxMipLevelNode;
|
||||
|
||||
export const maxMipLevel = nodeProxy( MaxMipLevelNode );
|
||||
|
||||
addNodeClass( 'MaxMipLevelNode', MaxMipLevelNode );
|
Reference in New Issue
Block a user