You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
779 B
57 lines
779 B
2 years ago
|
import { FloatNode } from '../inputs/FloatNode.js';
|
||
|
|
||
|
class MaxMIPLevelNode extends FloatNode {
|
||
|
|
||
|
constructor( texture ) {
|
||
|
|
||
|
super();
|
||
|
|
||
|
this.texture = texture;
|
||
|
|
||
|
this.maxMIPLevel = 0;
|
||
|
|
||
|
}
|
||
|
|
||
|
get value() {
|
||
|
|
||
|
if ( this.maxMIPLevel === 0 ) {
|
||
|
|
||
|
var image = this.texture.value.image;
|
||
|
|
||
|
if ( Array.isArray( image ) ) image = image[ 0 ];
|
||
|
|
||
|
this.maxMIPLevel = image !== undefined ? Math.log( Math.max( image.width, image.height ) ) * Math.LOG2E : 0;
|
||
|
|
||
|
}
|
||
|
|
||
|
return this.maxMIPLevel;
|
||
|
|
||
|
}
|
||
|
|
||
|
set value( val ) {
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
toJSON( meta ) {
|
||
|
|
||
|
let data = this.getJSONNode( meta );
|
||
|
|
||
|
if ( ! data ) {
|
||
|
|
||
|
data = this.createJSONNode( meta );
|
||
|
|
||
|
data.texture = this.texture.uuid;
|
||
|
|
||
|
}
|
||
|
|
||
|
return data;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
MaxMIPLevelNode.prototype.nodeType = 'MaxMIPLevel';
|
||
|
|
||
|
export { MaxMIPLevelNode };
|