gpt4 book ai didi

shader - 带有 SceneKit SCNProgram 的 Metal 着色器

转载 作者:行者123 更新时间:2023-12-04 09:30:33 25 4
gpt4 key购买 nike

我正在寻找一个可以在带有 SCNProgram 的 SceneKit 中工作的 Metal 着色器。

有人可以告诉我正确的方法声明/如何连接它吗?

let program = SCNProgram()
program.vertexFunctionName = "myVertex"
program.fragmentFunctionName = "myFragment"
material.program = program

然后是着色器
//MyShader.metal

vertex something myVertex(something)
{
return something;
}

fragment float4 myFragment(something)
{
return something
}

我只是在寻找最基本的例子。

最佳答案

我剪掉了所有“不必要”的东西,这是最基本的,几乎就是我的第一个 Metal 着色器。

接下来,我将开始研究连接其他顶点属性(颜色、法线),并可能进行一些基本的光照计算。

#include <metal_stdlib>
using namespace metal;
#include <SceneKit/scn_metal>

struct MyNodeBuffer {
float4x4 modelTransform;
float4x4 modelViewTransform;
float4x4 normalTransform;
float4x4 modelViewProjectionTransform;
};

typedef struct {
float3 position [[ attribute(SCNVertexSemanticPosition) ]];
} MyVertexInput;

struct SimpleVertex
{
float4 position [[position]];
};


vertex SimpleVertex myVertex(MyVertexInput in [[ stage_in ]],
constant SCNSceneBuffer& scn_frame [[buffer(0)]],
constant MyNodeBuffer& scn_node [[buffer(1)]])
{
SimpleVertex vert;
vert.position = scn_node.modelViewProjectionTransform * float4(in.position, 1.0);

return vert;
}

fragment half4 myFragment(SimpleVertex in [[stage_in]])
{
half4 color;
color = half4(1.0 ,0.0 ,0.0, 1.0);

return color;
}

对于任何错别字道歉,在我的手机上编辑它......

关于shader - 带有 SceneKit SCNProgram 的 Metal 着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37697939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com