我正在尝试在Metal中实现体素锥描图。该算法的步骤之一是使用几何着色器对几何进行体素化。Metal没有几何着色器,因此我一直在考虑使用计算着色器对其进行仿真。我将顶点缓冲区传递到计算着色器中,执行几何着色器通常会执行的操作,然后将结果写入输出缓冲区。我还将绘制命令添加到间接缓冲区。我将输出缓冲区用作我的顶点着色器的顶点缓冲区。这可以正常工作,但是我需要为顶点存储两倍的内存,为顶点缓冲区存储一个,为输出缓冲区存储一个。有什么方法可以将计算着色器的输出直接传递到顶点着色器,而无需将其存储在中间缓冲区中?我不需要保存计算着色器的输出缓冲区的内容。
这可能吗?谢谢
编辑
本质上,我正在尝试从glsl模拟以下着色器:
#version 450
layout(triangles) in;
layout(triangle_strip, max_vertices = 3) out;
layout(location = 0) in vec3 in_position[];
layout(location = 1) in vec3 in_normal[];
layout(location = 2) in vec2 in_uv[];
layout(location = 0) out vec3 out_position;
layout(location = 1) out vec3 out_normal;
layout(location = 2) out vec2 out_uv;
void main()
{
vec3 p = abs(cross(in_position[1] - in_position[0], in_position[2] - in_position[0]));
for (uint i = 0; i < 3; ++i)
{
out_position = in_position[i];
out_normal = in_normal[i];
out_uv = in_uv[i]; …Run Code Online (Sandbox Code Playgroud)