我在哪里可以找到Metal着色语言中所有内置变量的定义?

时间:2018-04-02 10:16:20

标签: ios scenekit metal

我得到一段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 中找不到它。

1 个答案:

答案 0 :(得分:2)

这些不是由Metal公开的,而是特定于SceneKit框架。

它们是SCNShadable功能的一部分,您可以在文档中找到不同入口点的一些信息:

  1. SCNShaderModifierEntryPointGeometry
  2. SCNShaderModifierEntryPointSurface
  3. SCNShaderModifierEntryPointLightingModel
  4. SCNShaderModifierEntryPointFragment
  5. 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 );头文件还包含文档和示例。