我得到一段Metal shader,但我找不到像_surface
等内置变量的信息。
float AO = _surface.ambientOcclusion;
float lightContrib = _lightingContribution.diffuse.r;
lightContrib *= AO;
// mask of fresnel
float mask = _surface.specular.b;
float fresnel = saturate(dot(_surface.view, _surface.normal));
在哪里可以找到Metal着色器语言中所有内置变量的定义?我甚至在Apple规范Metal Shading Language Specification 中找不到它。
答案 0 :(得分:2)
这些不是由Metal公开的,而是特定于SceneKit框架。
它们是SCNShadable
功能的一部分,您可以在文档中找到不同入口点的一些信息:
SCNShaderModifierEntryPointGeometry
SCNShaderModifierEntryPointSurface
SCNShaderModifierEntryPointLightingModel
SCNShaderModifierEntryPointFragment
var obj = {
prop1: {val:2},
prop2: {val:3},
prop3: {val:5},
prop4: {val:7}
};
var output = Object.keys(obj).map( s => ({...obj[s], name:s}) );
console.log( output );
头文件还包含文档和示例。