Home Reference Source

src/materials/SMAABlendMaterial.js

import { ShaderMaterial, Uniform, Vector2 } from "three";

import fragment from "./glsl/smaa-blend/shader.frag";
import vertex from "./glsl/smaa-blend/shader.vert";

/**
 * Subpixel Morphological Antialiasing.
 *
 * This material is used to render the final antialiasing.
 */

export class SMAABlendMaterial extends ShaderMaterial {

	/**
	 * Constructs a new SMAA blend material.
	 *
	 * @param {Vector2} [texelSize] - The absolute screen texel size.
	 */

	constructor(texelSize = new Vector2()) {

		super({

			type: "SMAABlendMaterial",

			uniforms: {

				tDiffuse: new Uniform(null),
				tWeights: new Uniform(null),
				texelSize: new Uniform(texelSize)

			},

			fragmentShader: fragment,
			vertexShader: vertex,

			depthWrite: false,
			depthTest: false

		});

	}

}