Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/files.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ var files = {
"webgl_materials_video",
"webgl_materials_video_webcam",
"webgl_materials_wireframe",
'webgl_materials_shader_override',
"webgl_mirror",
"webgl_mirror_nodes",
"webgl_modifier_simplifier",
Expand Down
65 changes: 48 additions & 17 deletions examples/webgl_materials_modified.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,29 +91,59 @@
scene = new THREE.Scene();

var material = new THREE.MeshNormalMaterial();
material.onBeforeCompile = function ( shader ) {

// console.log( shader )
// BEGIN custom shader injection ----

shader.uniforms.time = { value: 0 };
var myShader = [
'float theta = sin( time + position.y ) / 2.0;',
'float c = cos( theta );',
'float s = sin( theta );',
'mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );',
'vec3 transformed = vec3( position ) * m;',
'vNormal = vNormal * m;'
].join( '\n' );

shader.vertexShader = 'uniform float time;\n' + shader.vertexShader;
shader.vertexShader = shader.vertexShader.replace(
'#include <begin_vertex>',
[
'float theta = sin( time + position.y ) / 2.0;',
'float c = cos( theta );',
'float s = sin( theta );',
'mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );',
'vec3 transformed = vec3( position ) * m;',
'vNormal = vNormal * m;'
].join( '\n' )
);
material.shaderIncludes = {

materialShader = shader;
begin_vertex: myShader,

uv_pars_vertex: THREE.ShaderChunk.uv_pars_vertex + '\nuniform float time;\n'

};

material.shaderUniforms = {
time: { value: 0 }
};

//OR

// material.shaderIncludes = {

// begin_vertex: myShader,

// };

// material.shaderUniforms = {
// time: { value: 0 , type:'float' } //if type is provided the uniform will be injected automatically
// };

materialShader = material;

// material.onBeforeCompile = function ( shader ) {

// shader.uniforms.time = { value: 0 };

// shader.vertexShader = 'uniform float time;\n' + shader.vertexShader;

// shader.vertexShader = shader.vertexShader.replace(
// '#include <begin_vertex>',
// myShader
// );

// materialShader = shader;

// };

loader = new THREE.JSONLoader();
loader.load( "obj/leeperrysmith/LeePerrySmith.js", function( geometry ) {

Expand Down Expand Up @@ -188,7 +218,8 @@

if ( materialShader ) {

materialShader.uniforms.time.value = performance.now() / 1000;
// materialShader.uniforms.time.value = performance.now() / 1000;
materialShader.shaderUniforms.time.value = performance.now() / 1000;

}

Expand Down
Loading