Bläddra i källkod

Shaders: Add name property (#26101)

* Shaders: Add name property

* Shaders: Add name property

* Handle undefined shader name
WestLangley 2 år sedan
förälder
incheckning
f096de7b87

+ 1 - 0
examples/jsm/misc/GPUComputationRenderer.js

@@ -332,6 +332,7 @@ class GPUComputationRenderer {
 			uniforms = uniforms || {};
 
 			const material = new ShaderMaterial( {
+				name: 'GPUComputationShader',
 				uniforms: uniforms,
 				vertexShader: getPassThroughVertexShader(),
 				fragmentShader: computeFragmentShader

+ 3 - 0
examples/jsm/objects/Reflector.js

@@ -54,6 +54,7 @@ class Reflector extends Mesh {
 		const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, { samples: multisample, type: HalfFloatType } );
 
 		const material = new ShaderMaterial( {
+			name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
 			uniforms: UniformsUtils.clone( shader.uniforms ),
 			fragmentShader: shader.fragmentShader,
 			vertexShader: shader.vertexShader
@@ -201,6 +202,8 @@ class Reflector extends Mesh {
 
 Reflector.ReflectorShader = {
 
+	name: 'ReflectorShader',
+
 	uniforms: {
 
 		'color': {

+ 4 - 0
examples/jsm/postprocessing/BloomPass.js

@@ -30,6 +30,7 @@ class BloomPass extends Pass {
 
 		this.materialCombine = new ShaderMaterial( {
 
+			name: CombineShader.name,
 			uniforms: this.combineUniforms,
 			vertexShader: CombineShader.vertexShader,
 			fragmentShader: CombineShader.fragmentShader,
@@ -49,6 +50,7 @@ class BloomPass extends Pass {
 
 		this.materialConvolution = new ShaderMaterial( {
 
+			name: convolutionShader.name,
 			uniforms: this.convolutionUniforms,
 			vertexShader: convolutionShader.vertexShader,
 			fragmentShader: convolutionShader.fragmentShader,
@@ -127,6 +129,8 @@ class BloomPass extends Pass {
 
 const CombineShader = {
 
+	name: 'CombineShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 1 - 0
examples/jsm/postprocessing/DotScreenPass.js

@@ -21,6 +21,7 @@ class DotScreenPass extends Pass {
 
 		this.material = new ShaderMaterial( {
 
+			name: shader.name,
 			uniforms: this.uniforms,
 			vertexShader: shader.vertexShader,
 			fragmentShader: shader.fragmentShader

+ 1 - 0
examples/jsm/postprocessing/FilmPass.js

@@ -17,6 +17,7 @@ class FilmPass extends Pass {
 
 		this.material = new ShaderMaterial( {
 
+			name: shader.name,
 			uniforms: this.uniforms,
 			vertexShader: shader.vertexShader,
 			fragmentShader: shader.fragmentShader

+ 1 - 0
examples/jsm/postprocessing/ShaderPass.js

@@ -24,6 +24,7 @@ class ShaderPass extends Pass {
 
 			this.material = new ShaderMaterial( {
 
+				name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
 				defines: Object.assign( {}, shader.defines ),
 				uniforms: this.uniforms,
 				vertexShader: shader.vertexShader,

+ 2 - 0
examples/jsm/shaders/BleachBypassShader.js

@@ -6,6 +6,8 @@
 
 const BleachBypassShader = {
 
+	name: 'BleachBypassShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/ColorifyShader.js

@@ -8,6 +8,8 @@ import {
 
 const ColorifyShader = {
 
+	name: 'ColorifyShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/ConvolutionShader.js

@@ -9,6 +9,8 @@ import {
 
 const ConvolutionShader = {
 
+	name: 'ConvolutionShader',
+
 	defines: {
 
 		'KERNEL_SIZE_FLOAT': '25.0',

+ 2 - 0
examples/jsm/shaders/CopyShader.js

@@ -4,6 +4,8 @@
 
 const CopyShader = {
 
+	name: 'CopyShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/DotScreenShader.js

@@ -10,6 +10,8 @@ import {
 
 const DotScreenShader = {
 
+	name: 'DotScreenShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/FilmShader.js

@@ -20,6 +20,8 @@
 
 const FilmShader = {
 
+	name: 'FilmShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/GammaCorrectionShader.js

@@ -5,6 +5,8 @@
 
 const GammaCorrectionShader = {
 
+	name: 'GammaCorrectionShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null }

+ 2 - 0
examples/jsm/shaders/HorizontalBlurShader.js

@@ -9,6 +9,8 @@
 
 const HorizontalBlurShader = {
 
+	name: 'HorizontalBlurShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/RGBShiftShader.js

@@ -10,6 +10,8 @@
 
 const RGBShiftShader = {
 
+	name: 'RGBShiftShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/SepiaShader.js

@@ -6,6 +6,8 @@
 
 const SepiaShader = {
 
+	name: 'SepiaShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/VerticalBlurShader.js

@@ -9,6 +9,8 @@
 
 const VerticalBlurShader = {
 
+	name: 'VerticalBlurShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 2 - 0
examples/jsm/shaders/VignetteShader.js

@@ -6,6 +6,8 @@
 
 const VignetteShader = {
 
+	name: 'VignetteShader',
+
 	uniforms: {
 
 		'tDiffuse': { value: null },

+ 10 - 0
src/renderers/webgl/WebGLProgram.js

@@ -418,6 +418,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 
 		prefixVertex = [
 
+			'#define SHADER_TYPE ' + parameters.shaderType,
+			'#define SHADER_NAME ' + parameters.shaderName,
+
 			customDefines
 
 		].filter( filterEmptyLine ).join( '\n' );
@@ -431,6 +434,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 		prefixFragment = [
 
 			customExtensions,
+
+			'#define SHADER_TYPE ' + parameters.shaderType,
+			'#define SHADER_NAME ' + parameters.shaderName,
+
 			customDefines
 
 		].filter( filterEmptyLine ).join( '\n' );
@@ -447,6 +454,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 
 			generatePrecision( parameters ),
 
+			'#define SHADER_TYPE ' + parameters.shaderType,
 			'#define SHADER_NAME ' + parameters.shaderName,
 
 			customDefines,
@@ -660,6 +668,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 
 			generatePrecision( parameters ),
 
+			'#define SHADER_TYPE ' + parameters.shaderType,
 			'#define SHADER_NAME ' + parameters.shaderName,
 
 			customDefines,
@@ -958,6 +967,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 
 	//
 
+	this.type = parameters.shaderType;
 	this.name = parameters.shaderName;
 	this.id = programIdCount ++;
 	this.cacheKey = cacheKey;

+ 2 - 1
src/renderers/webgl/WebGLPrograms.js

@@ -163,7 +163,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 			isWebGL2: IS_WEBGL2,
 
 			shaderID: shaderID,
-			shaderName: material.type,
+			shaderType: material.type,
+			shaderName: material.name,
 
 			vertexShader: vertexShader,
 			fragmentShader: fragmentShader,