Skip to content

Commit 6a53d84

Browse files
authored
Merge pull request #6315 from AnalyticalGraphicsInc/material-bug-fix
Fix generating model shaders for case where material is not used by a primitve
2 parents c0cf087 + 34338c1 commit 6a53d84

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Change Log
1919
##### Fixes :wrench:
2020
* Fixed support of glTF-supplied tangent vectors. [#6302](https://github.com/AnalyticalGraphicsInc/cesium/pull/6302)
2121
* Fixed improper zoom during model load failure. [#6305](https://github.com/AnalyticalGraphicsInc/cesium/pull/6305)
22+
* Fixed model loading failure when containing unused materials. [6315](https://github.com/AnalyticalGraphicsInc/cesium/pull/6315)
2223

2324
### 1.43 - 2018-03-01
2425

Source/ThirdParty/GltfPipeline/processModelMaterialsCommon.js

+16-8
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,17 @@ define([
247247
parameterValues.doubleSided = khrMaterialsCommon.doubleSided;
248248
}
249249
var jointCount = defaultValue(khrMaterialsCommon.jointCount, 0);
250-
251-
var hasSkinning = jointCount > 0;
252250
var primitiveInfo = khrMaterialsCommon.extras._pipeline.primitive;
253-
var skinningInfo = primitiveInfo.skinning;
254-
var hasVertexColors = primitiveInfo.hasVertexColors;
251+
252+
var skinningInfo;
253+
var hasSkinning = false;
254+
var hasVertexColors = false;
255+
256+
if (defined(primitiveInfo)) {
257+
skinningInfo = primitiveInfo.skinning;
258+
hasSkinning = skinningInfo.skinned;
259+
hasVertexColors = primitiveInfo.hasVertexColors;
260+
}
255261

256262
var vertexShader = 'precision highp float;\n';
257263
var fragmentShader = 'precision highp float;\n';
@@ -788,11 +794,13 @@ define([
788794
var jointCount = defaultValue(khrMaterialsCommon.jointCount, 0);
789795
techniqueKey += jointCount.toString() + ';';
790796
var primitiveInfo = khrMaterialsCommon.extras._pipeline.primitive;
791-
var skinningInfo = primitiveInfo.skinning;
792-
if (jointCount > 0) {
793-
techniqueKey += skinningInfo.type + ';';
797+
if (defined(primitiveInfo)) {
798+
var skinningInfo = primitiveInfo.skinning;
799+
if (jointCount > 0) {
800+
techniqueKey += skinningInfo.type + ';';
801+
}
802+
techniqueKey += primitiveInfo.hasVertexColors;
794803
}
795-
techniqueKey += primitiveInfo.hasVertexColors;
796804

797805
return techniqueKey;
798806
}

Source/ThirdParty/GltfPipeline/processPbrMetallicRoughness.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,16 @@ define([
9494
var joints = (defined(skin)) ? skin.joints : [];
9595
var jointCount = joints.length;
9696
var primitiveInfo = material.extras._pipeline.primitive;
97-
var skinningInfo = primitiveInfo.skinning;
98-
var hasSkinning = skinningInfo.skinned;
99-
var hasVertexColors = primitiveInfo.hasVertexColors;
97+
98+
var skinningInfo;
99+
var hasSkinning = false;
100+
var hasVertexColors = false;
101+
102+
if (defined(primitiveInfo)) {
103+
skinningInfo = primitiveInfo.skinning;
104+
hasSkinning = skinningInfo.skinned;
105+
hasVertexColors = primitiveInfo.hasVertexColors;
106+
}
100107

101108
var hasNormals = true;
102109
var hasTangents = false;

0 commit comments

Comments
 (0)