您好,目前来看应该是您加载的预编译的shaderVariantData.json里面defineNames错误导致的,您可以打开Shader3D的debugMode;
Laya.Shader3D.debugMode = true;
可以看到实际上defineNames除了UV还有Sprite3D。
[{
"id": "SceneEffectCommon00UV",
"shaderName": "SceneEffectCommon",
"defineNames": ["UV", "Sprite3D"],
"passIndex": 0,
"subShaderIndex": 0
}]
另外您还需要在编译shader时候调用Laya.Shader3D.compileShaderByDefineNames时候,最后参数nodeMaps传入为defineNames:[code]Shader3D.compileShaderByDefineNames(
datum.shaderName,
datum.subShaderIndex,
datum.passIndex,
datum.defineNames,
datum.defineNames); // 这里要传入收集的nodeMaps数据[/code]这样预编译之后再加载模型就可以显示了;
关于预编译的使用方式您可以参考下此版本对应IDE创建的API示例模板,里面有shader预编译的使用示例。