ue4-shader-自定义shader代码hlsl

ue4-shader-自定义shader代码hlsl.
tips: 相关测试在 CustomNode 目录下


自定义表达式节点

  1. 右键新建一个 custom 节点

  2. 加入 hlsl 代码, 修改相关参数.

    具体代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    float3 blur = Texture2DSample(In, InSampler, UV);

    for (int i = 0; i < r; i++)
    {

    blur += Texture2DSample(In, InSampler, UV + float2(i * dist, 0));
    blur += Texture2DSample(In, InSampler, UV - float2(i * dist, 0));

    }

    for (int j = 0; j < r; j++)
    {

    blur += Texture2DSample(In, InSampler, UV + float2(0, j * dist));
    blur += Texture2DSample(In, InSampler, UV - float2(0, j * dist));

    }

    blur /= 2*(2*r)+1;
    return blur;

    这里有几个需要注意的地方:

    1. 参数命名和hlsl代码中的必须完全一致, 大小写敏感
    2. Texture2DSample 中的第二个参数 InSampler 是与 In 相关的, 必须按照这样的写法来写. 输入贴图参数名是 XXX, 那么第二个参数就是 XXXSampler
    3. Texture2DSample 中的第一个参数 In 是一个 TextureObject, 而不是 TextureSample. 输入传入的是是一个 TextureSample, 会报错: undeclared identifier 'TexSampler'

踩坑: 报错 undeclared identifier 'TexSampler'

传入的参数错误, 应该传入一个 TextureObject, 而不是 TextureSample.


再来一波边缘检测 - Sobel 算子