Skip to content

Commit fbbff92

Browse files
mvaligurskyMartin Valigursky
andauthored
Fix BasicMaterial for skinned and morphed meshes (playcanvas#3299)
* Fix BasicMaterial for skinned and morphed meshes * lint space Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>
1 parent 1ad06f4 commit fbbff92

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

src/graphics/program-lib/programs/basic.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,18 @@ import { begin, end, fogCode, precisionCode, skinCode } from './common.js';
1212
const basic = {
1313
generateKey: function (options) {
1414
let key = 'basic';
15-
if (options.fog) key += '_fog';
16-
if (options.alphaTest) key += '_atst';
17-
if (options.vertexColors) key += '_vcol';
18-
if (options.diffuseMap) key += '_diff';
15+
if (options.fog) key += '_fog';
16+
if (options.alphaTest) key += '_atst';
17+
if (options.vertexColors) key += '_vcol';
18+
if (options.diffuseMap) key += '_diff';
19+
if (options.skin) key += '_skin';
20+
21+
if (options.screenSpace) key += '_ss';
22+
if (options.useInstancing) key += '_inst';
23+
if (options.useMorphPosition) key += '_morphp';
24+
if (options.useMorphNormal) key += '_morphn';
25+
if (options.useMorphTextureBased) key += '_morpht';
26+
1927
key += '_' + options.pass;
2028
return key;
2129
},

src/scene/materials/basic-material.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import { Color } from '../../math/color.js';
2+
import {
3+
SHADERDEF_INSTANCING, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_TEXTURE_BASED,
4+
SHADERDEF_SCREENSPACE, SHADERDEF_SKIN
5+
} from '../constants.js';
26

37
import { Material } from './material.js';
48

@@ -67,7 +71,13 @@ class BasicMaterial extends Material {
6771

6872
updateShader(device, scene, objDefs, staticLightList, pass, sortedLights) {
6973
var options = {
70-
skin: !!this.meshInstances[0].skinInstance,
74+
skin: objDefs && (objDefs & SHADERDEF_SKIN) !== 0,
75+
screenSpace: objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0,
76+
useInstancing: objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0,
77+
useMorphPosition: objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0,
78+
useMorphNormal: objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0,
79+
useMorphTextureBased: objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED) !== 0,
80+
7181
vertexColors: this.vertexColors,
7282
diffuseMap: !!this.colorMap,
7383
pass: pass

0 commit comments

Comments
 (0)