Unity Shader Note 1

2018-04-18  本文已影响0人  泠璃
Redering Pipeline

渲染管线、渲染流水线(Rendering Pipeline)

  1. 数据输入
  2. 可编程顶点处理器
  3. 曲面细分(外壳着色器、曲面细分、域着色器)
  4. 几何着色器
  5. 光栅化
  6. 像素着色器(可编程片段处理器)
  7. 数据输出

不常见的Shader

Geometry Shader
[maxvertexcount(NumVerts)]
void shaderName(PrimitiveType DataType Name[NumElements], inout StreamOutputObject);
//PrimitiveType的操作单位为图元,包括point,line,triangle
//StreamOutputObject包括PointStream, LineStream, TriangleStream

示例:草体制作

草体分解 草体动态

参考链接:

  1. https://github.com/chenjd/Realistic-Real-Time-Grass-Rendering-With-Unity
  2. https://zhuanlan.zhihu.com/p/29632347

Compute Shader
Compute Shader计算流水线
    #pragma kernel CSMain
    //kernel指令用来指名计算函数,可以定义多个kernel函数

    //Creat a RenderTexture with enableRandomWrite flag and set it with cs.SetTexture
    RWTexture2D<float4> Result;
    //RWTexture2D为可读写纹理,在cs中还可以操作数据类型buffer

    [numthreads(8,8,1)]    //定义线程组内的线程模型
    void CSMain(unit3 id:SV_DispatchThreadID)
    {
        Result[id.xy] = float4(id.x & id.y, (id.x &15)/15.0, (id.y &15)/15.0, 0.0);
    }

执行Compute Shader

大群落的行为模拟


资料整理自 https://zhuanlan.zhihu.com/p/31529550

上一篇下一篇

猜你喜欢

热点阅读