无题
创建第一个Unity Compute Shader前面我们提到了,使用dispatch函数来调用给定的compute shader,那么我们来制作自己的第一个compute shader吧。
简单搭建一下场景。
最简单的处理是把RGB三个通道平均一下,产生一个灰度图像。
12345678910#pragma kernel CSMainRWTexture2D<float4> Result;[numthreads(8,8,1)]void CSMain (uint3 id : SV_DispatchThreadID){ float4 color = Result[id.xy]; float grey=0.33*(color.x+color.y+color.z); Result[id.xy] = float4(grey,grey,grey,0);}
接下来是在C#脚本中调用它。这里作者踩了一个坑。
1234567891011121314151617181920212223using System.Collections;using Sys ...
unity compute shader学习(一)
unity compute shader学习(一)入门篇创建compute shaderunity资产库中,右键创建一个compute shader。
默认的shader:
1234567891011121314// Each #kernel tells which function to compile; you can have many kernels#pragma kernel CSMain// Create a RenderTexture with enableRandomWrite flag and set it// with cs.SetTextureRWTexture2D<float4> Result;[numthreads(8,8,1)]void CSMain (uint3 id : SV_DispatchThreadID){ // TODO: insert actual code here! Result[id.xy] = float4(id.x & id.y, (id.x & 15)/15.0, (id.y &am ...