Browse Source

Editor: Adding support for ShaderMaterial.

Mr.doob 11 years ago
parent
commit
31a76ae959
2 changed files with 38 additions and 17 deletions
  1. 35 13
      editor/js/Sidebar.Material.js
  2. 3 4
      src/materials/ShaderMaterial.js

+ 35 - 13
editor/js/Sidebar.Material.js

@@ -71,6 +71,7 @@ Sidebar.Material = function ( editor ) {
 		'MeshLambertMaterial': 'MeshLambertMaterial',
 		'MeshLambertMaterial': 'MeshLambertMaterial',
 		'MeshNormalMaterial': 'MeshNormalMaterial',
 		'MeshNormalMaterial': 'MeshNormalMaterial',
 		'MeshPhongMaterial': 'MeshPhongMaterial',
 		'MeshPhongMaterial': 'MeshPhongMaterial',
+		'ShaderMaterial': 'ShaderMaterial',
 		'SpriteMaterial': 'SpriteMaterial'
 		'SpriteMaterial': 'SpriteMaterial'
 
 
 	} ).setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( update );
 	} ).setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( update );
@@ -130,6 +131,26 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialShininessRow );
 	container.add( materialShininessRow );
 
 
+	// vertex shader
+
+	var materialVertexShaderRow = new UI.Panel();
+	var materialVertexShader = new UI.TextArea().setWidth( '150px' ).setHeight( '40px' ).onChange( update );
+
+	materialVertexShaderRow.add( new UI.Text( 'Vertex Shader' ).setWidth( '90px' ) );
+	materialVertexShaderRow.add( materialVertexShader );
+
+	container.add( materialVertexShaderRow );
+
+	// fragment shader
+
+	var materialFragmentShaderRow = new UI.Panel();
+	var materialFragmentShader = new UI.TextArea().setWidth( '150px' ).setHeight( '40px' ).onChange( update );
+
+	materialFragmentShaderRow.add( new UI.Text( 'Fragment Shader' ).setWidth( '90px' ) );
+	materialFragmentShaderRow.add( materialFragmentShader );
+
+	container.add( materialFragmentShaderRow );
+
 	// vertex colors
 	// vertex colors
 
 
 	var materialVertexColorsRow = new UI.Panel();
 	var materialVertexColorsRow = new UI.Panel();
@@ -146,7 +167,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialVertexColorsRow );
 	container.add( materialVertexColorsRow );
 
 
-
 	// skinning
 	// skinning
 
 
 	var materialSkinningRow = new UI.Panel();
 	var materialSkinningRow = new UI.Panel();
@@ -157,7 +177,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialSkinningRow );
 	container.add( materialSkinningRow );
 
 
-
 	// map
 	// map
 
 
 	var materialMapRow = new UI.Panel();
 	var materialMapRow = new UI.Panel();
@@ -170,7 +189,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialMapRow );
 	container.add( materialMapRow );
 
 
-
 	// light map
 	// light map
 
 
 	var materialLightMapRow = new UI.Panel();
 	var materialLightMapRow = new UI.Panel();
@@ -183,7 +201,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialLightMapRow );
 	container.add( materialLightMapRow );
 
 
-
 	// bump map
 	// bump map
 
 
 	var materialBumpMapRow = new UI.Panel();
 	var materialBumpMapRow = new UI.Panel();
@@ -198,7 +215,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialBumpMapRow );
 	container.add( materialBumpMapRow );
 
 
-
 	// normal map
 	// normal map
 
 
 	var materialNormalMapRow = new UI.Panel();
 	var materialNormalMapRow = new UI.Panel();
@@ -211,7 +227,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialNormalMapRow );
 	container.add( materialNormalMapRow );
 
 
-
 	// specular map
 	// specular map
 
 
 	var materialSpecularMapRow = new UI.Panel();
 	var materialSpecularMapRow = new UI.Panel();
@@ -224,7 +239,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialSpecularMapRow );
 	container.add( materialSpecularMapRow );
 
 
-
 	// env map
 	// env map
 
 
 	var materialEnvMapRow = new UI.Panel();
 	var materialEnvMapRow = new UI.Panel();
@@ -239,7 +253,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialEnvMapRow );
 	container.add( materialEnvMapRow );
 
 
-
 	// blending
 	// blending
 
 
 	var materialBlendingRow = new UI.Panel();
 	var materialBlendingRow = new UI.Panel();
@@ -259,7 +272,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialBlendingRow );
 	container.add( materialBlendingRow );
 
 
-
 	// side
 	// side
 
 
 	var materialSideRow = new UI.Panel();
 	var materialSideRow = new UI.Panel();
@@ -276,7 +288,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialSideRow );
 	container.add( materialSideRow );
 
 
-
 	// opacity
 	// opacity
 
 
 	var materialOpacityRow = new UI.Panel();
 	var materialOpacityRow = new UI.Panel();
@@ -287,7 +298,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialOpacityRow );
 	container.add( materialOpacityRow );
 
 
-
 	// transparent
 	// transparent
 
 
 	var materialTransparentRow = new UI.Panel();
 	var materialTransparentRow = new UI.Panel();
@@ -298,7 +308,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialTransparentRow );
 	container.add( materialTransparentRow );
 
 
-
 	// wireframe
 	// wireframe
 
 
 	var materialWireframeRow = new UI.Panel();
 	var materialWireframeRow = new UI.Panel();
@@ -311,7 +320,6 @@ Sidebar.Material = function ( editor ) {
 
 
 	container.add( materialWireframeRow );
 	container.add( materialWireframeRow );
 
 
-
 	//
 	//
 
 
 	function update() {
 	function update() {
@@ -574,6 +582,8 @@ Sidebar.Material = function ( editor ) {
 			'emissive': materialEmissiveRow,
 			'emissive': materialEmissiveRow,
 			'specular': materialSpecularRow,
 			'specular': materialSpecularRow,
 			'shininess': materialShininessRow,
 			'shininess': materialShininessRow,
+			'vertexShader': materialVertexShader,
+			'fragmentShader': materialFragmentShader,
 			'vertexColors': materialVertexColorsRow,
 			'vertexColors': materialVertexColorsRow,
 			'skinning': materialSkinningRow,
 			'skinning': materialSkinningRow,
 			'map': materialMapRow,
 			'map': materialMapRow,
@@ -653,6 +663,18 @@ Sidebar.Material = function ( editor ) {
 
 
 			}
 			}
 
 
+			if ( material.vertexShader !== undefined ) {
+
+				materialVertexShader.setValue( material.vertexShader );
+
+			}
+
+			if ( material.fragmentShader !== undefined ) {
+
+				materialFragmentShader.setValue( material.fragmentShader );
+
+			}
+
 			if ( material.vertexColors !== undefined ) {
 			if ( material.vertexColors !== undefined ) {
 
 
 				materialVertexColors.setValue( material.vertexColors );
 				materialVertexColors.setValue( material.vertexColors );

+ 3 - 4
src/materials/ShaderMaterial.js

@@ -2,12 +2,11 @@
  * @author alteredq / http://alteredqualia.com/
  * @author alteredq / http://alteredqualia.com/
  *
  *
  * parameters = {
  * parameters = {
- *  fragmentShader: <string>,
- *  vertexShader: <string>,
- *
+ *  defines: { "label" : "value" },
  *  uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } },
  *  uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } },
  *
  *
- *  defines: { "label" : "value" },
+ *  fragmentShader: <string>,
+ *  vertexShader: <string>,
  *
  *
  *  shading: THREE.SmoothShading,
  *  shading: THREE.SmoothShading,
  *  blending: THREE.NormalBlending,
  *  blending: THREE.NormalBlending,