Skip to content

Commit 6b07f27

Browse files
authored
Merge pull request #15313 from mrdoob/matcap
MeshMatcapMaterial no longer requiring a matcap.
2 parents 8685a33 + 1f45f2f commit 6b07f27

File tree

5 files changed

+19
-30
lines changed

5 files changed

+19
-30
lines changed

examples/webgl_materials_matcap.html

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
function init() {
6868

6969
// renderer
70-
renderer = new THREE.WebGLRenderer();
70+
renderer = new THREE.WebGLRenderer( { antialias: true } );
7171
renderer.setPixelRatio( window.devicePixelRatio );
7272
renderer.setSize( window.innerWidth, window.innerHeight );
7373
document.body.appendChild( renderer.domElement );
@@ -100,8 +100,6 @@
100100

101101
matcap.encoding = THREE.sRGBEncoding;
102102

103-
if ( mesh ) mesh.material.needsUpdate = true;
104-
105103
} );
106104

107105
// model
@@ -185,18 +183,18 @@
185183

186184
function imgCallback( event ) {
187185

188-
var matcap = mesh.material.matcap;
186+
if ( mesh.material.matcap ) {
189187

190-
matcap.image = event.target;
188+
mesh.material.matcap.dispose();
191189

192-
matcap.needsUpdate = true;
190+
}
193191

194-
API.color = 0xffffff;
195-
mesh.material.color.set( API.color );
192+
mesh.material.matcap = new THREE.Texture( event.target );
193+
mesh.material.matcap.needsUpdate = true;
196194

197-
render();
195+
image.src = mesh.material.matcap.image.src; // corner div
198196

199-
image.src = matcap.image.src; // corner div
197+
render();
200198

201199
}
202200

src/materials/MeshMatcapMaterial.js

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,6 @@ function MeshMatcapMaterial( parameters ) {
6868

6969
this.setValues( parameters );
7070

71-
// a matcap is required
72-
73-
if ( this.matcap === null ) {
74-
75-
var canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );
76-
canvas.width = 1;
77-
canvas.height = 1;
78-
79-
var context = canvas.getContext( '2d' );
80-
81-
context.fillStyle = '#fff';
82-
context.fillRect( 0, 0, 1, 1 );
83-
84-
this.matcap = new THREE.CanvasTexture( canvas );
85-
86-
}
87-
8871
}
8972

9073
MeshMatcapMaterial.prototype = Object.create( Material.prototype );

src/renderers/shaders/ShaderLib/meshmatcap_frag.glsl.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,16 @@ void main() {
4242
vec3 y = cross( viewDir, x );
4343
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
4444
45-
vec4 matcapColor = texture2D( matcap, uv );
45+
#ifdef USE_MATCAP
4646
47-
matcapColor = matcapTexelToLinear( matcapColor );
47+
vec4 matcapColor = texture2D( matcap, uv );
48+
matcapColor = matcapTexelToLinear( matcapColor );
49+
50+
#else
51+
52+
vec4 matcapColor = vec4( 1.0 );
53+
54+
#endif
4855
4956
vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
5057

src/renderers/webgl/WebGLProgram.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
451451
( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',
452452

453453
parameters.map ? '#define USE_MAP' : '',
454+
parameters.matcap ? '#define USE_MATCAP' : '',
454455
parameters.envMap ? '#define USE_ENVMAP' : '',
455456
parameters.envMap ? '#define ' + envMapTypeDefine : '',
456457
parameters.envMap ? '#define ' + envMapModeDefine : '',

src/renderers/webgl/WebGLPrograms.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
2828
};
2929

3030
var parameterNames = [
31-
"precision", "supportsVertexTextures", "map", "mapEncoding", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding",
31+
"precision", "supportsVertexTextures", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding",
3232
"lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "displacementMap", "specularMap",
3333
"roughnessMap", "metalnessMap", "gradientMap",
3434
"alphaMap", "combine", "vertexColors", "fog", "useFog", "fogExp",

0 commit comments

Comments
 (0)