title: ue4-shader-自定义shader代码hlsl
categories: UnrealEngine4
tags: [ue4, shader, hlsl, custom]
date: 2019-05-01 00:14:31
comments: false

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


自定义表达式节点

  1. 右键新建一个 custom 节点

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

    具体代码

    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 算子

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐