Mar*_*lch 3 shader fragment-shader ios scenekit metal
我正在玩游戏并尝试在SceneKit中实现Metal Shader,它将勾勒出一个对象.
想法是绘制一个与此博客文章中的图像类似的轮廓(或轮廓)(博客文章不包含任何代码):
我是SceneKit和Metal着色器的新手,所以我只能绘制一些几何体并编写简单的顶点或片段着色器.我很好奇我怎么能达到这种效果呢?它是在多次通过中完成的吗?
干杯!
这里的基本思想是克隆"选定"节点及其几何体,然后使用自定义顶点和片段着色器沿顶点法线"推"几何体,仅使用纯色绘制克隆几何体的背面.
我写了一个小样本项目来演示并在此处发布.
核心Swift代码如下所示:
let outlineProgram = SCNProgram()
outlineProgram.vertexFunctionName = "outline_vertex"
outlineProgram.fragmentFunctionName = "outline_fragment"
let outlineNode = duplicateNode(node)
scene.rootNode.addChildNode(outlineNode)
outlineNode.geometry?.firstMaterial?.program = outlineProgram
outlineNode.geometry?.firstMaterial?.cullMode = .front
Run Code Online (Sandbox Code Playgroud)
负责沿正常方向推顶点的顶点着色器部分如下所示:
const float extrusionMagnitude = 0.05;
float3 modelPosition = in.position + normalize(in.normal) * extrusionMagnitude;
Run Code Online (Sandbox Code Playgroud)
从那里,您只需应用典型的模型 - 视图 - 投影矩阵,并从片段着色器返回平面颜色.

| 归档时间: |
|
| 查看次数: |
634 次 |
| 最近记录: |