Skip to content
This repository was archived by the owner on Jun 22, 2022. It is now read-only.

Commit 5eb8b0f

Browse files
committed
Better handling for roughness. Fixes #13.
1 parent 0922bc4 commit 5eb8b0f

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

viewer/lib/playcanvas-gltf.js

+15-15
Original file line numberDiff line numberDiff line change
@@ -364,17 +364,19 @@
364364
"void getGlossiness() {",
365365
" dGlossiness = 1.0;",
366366
"",
367-
" #ifdef MAPFLOAT",
368-
" dGlossiness *= material_shininess;",
369-
" #endif",
367+
"#ifdef MAPFLOAT",
368+
" dGlossiness *= material_shininess;",
369+
"#endif",
370370
"",
371-
" #ifdef MAPTEXTURE",
372-
" dGlossiness *= 1.0 - texture2D(texture_glossMap, $UV).$CH;",
373-
" #endif",
371+
"#ifdef MAPTEXTURE",
372+
" dGlossiness *= texture2D(texture_glossMap, $UV).$CH;",
373+
"#endif",
374374
"",
375-
" #ifdef MAPVERTEX",
376-
" dGlossiness *= 1.0 - saturate(vVertexColor.$VC);",
377-
" #endif",
375+
"#ifdef MAPVERTEX",
376+
" dGlossiness *= saturate(vVertexColor.$VC);",
377+
"#endif",
378+
"",
379+
" dGlossiness = 1.0 - dGlossiness;",
378380
"",
379381
" dGlossiness += 0.0000001;",
380382
"}"
@@ -384,7 +386,7 @@
384386
var material = new pc.StandardMaterial();
385387

386388
// glTF dooesn't define how to occlude specular
387-
material.occludeSpecular = false;
389+
material.occludeSpecular = true;
388390
material.diffuseTint = true;
389391
material.diffuseVertexColor = true;
390392
material.chunks.glossPS = glossChunk;
@@ -425,19 +427,16 @@
425427
material.metalness = 1;
426428
}
427429
if (pbrData.hasOwnProperty('roughnessFactor')) {
428-
material.shininess = 100 * (1 - pbrData.roughnessFactor);
430+
material.shininess = 100 * pbrData.roughnessFactor;
429431
} else {
430-
material.shininess = 0;
432+
material.shininess = 100;
431433
}
432434
if (pbrData.hasOwnProperty('metallicRoughnessTexture')) {
433435
var metallicRoughnessTexture = pbrData.metallicRoughnessTexture;
434436
material.metalnessMap = resources.textures[metallicRoughnessTexture.index];
435437
material.metalnessMapChannel = 'b';
436438
material.glossMap = resources.textures[metallicRoughnessTexture.index];
437439
material.glossMapChannel = 'g';
438-
if (!pbrData.hasOwnProperty('roughnessFactor')) {
439-
material.shininess = 100;
440-
}
441440
if (metallicRoughnessTexture.hasOwnProperty('texCoord')) {
442441
material.glossMapUv = metallicRoughnessTexture.texCoord;
443442
material.metalnessMapUv = metallicRoughnessTexture.texCoord;
@@ -457,6 +456,7 @@
457456
if (data.hasOwnProperty('occlusionTexture')) {
458457
var occlusionTexture = data.occlusionTexture;
459458
material.aoMap = resources.textures[occlusionTexture.index];
459+
material.aoMapChannel = 'r';
460460
if (occlusionTexture.hasOwnProperty('texCoord')) {
461461
material.aoMapUv = occlusionTexture.texCoord;
462462
}

0 commit comments

Comments
 (0)