[page:Material] → [page:ShaderMaterial] →

# [name]

This class works just like [page:ShaderMaterial], except that definitions of built-in uniforms and attributes are not automatically prepended to the GLSL shader code.

## Examples

[example:webgl_buffergeometry_rawshader WebGL / buffergeometry / rawshader]
[example:webgl_buffergeometry_instancing_billboards WebGL / buffergeometry / instancing / billboards]
[example:webgl_buffergeometry_instancing_dynamic WebGL / buffergeometry / instancing / dynamic]
[example:webgl_buffergeometry_instancing_interleaved_dynamic WebGL / buffergeometry / instancing / interleaved / dynamic]
[example:webgl_buffergeometry_instancing WebGL / buffergeometry / instancing]
[example:webgl_interactive_instances_gpu WebGL / interactive / instances /gpu]
[example:webgl_raymarching_reflect WebGL / raymarching / reflect]

`var material = new THREE.RawShaderMaterial( { uniforms: { time: { value: 1.0 } }, vertexShader: document.getElementById( 'vertexShader' ).textContent, fragmentShader: document.getElementById( 'fragmentShader' ).textContent, } );`

## Constructor

### [name]( [param:Object parameters] )

[page:Object parameters] - (optional) an object with one or more properties defining the material's appearance. Any property of the material (including any property inherited from [page:Material] and [page:ShaderMaterial]) can be passed in here.

## Properties

See the base [page:Material] and [page:ShaderMaterial] classes for common properties.

### [property:Boolean isRawShaderMaterial]

Used to check whether this or derived classes are raw shader materials. Default is *true*.
You should not change this, as it used internally for optimisation.

## Methods

See the base [page:Material] and [page:ShaderMaterial] classes for common methods.

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]