【发布时间】:2018-02-11 15:22:01
【问题描述】:
我想用着色器代码 (hlsl) 在对象上画一条水平线。
裁剪着色器只是简单地获取到表面着色器中给定 Y 坐标的距离,并检查它是否高于给定值。
如果是这样,它将丢弃。结果是一个着色器,它简单地剪掉所有不在一条线上的像素。
void surf (Input IN, inout SurfaceOutputStandard o) {
// Albedo comes from a texture tinted by color
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
float d = abs(_YClip - IN.worldPos.y); // _YClip is is the properties and can be changed
if (d > _LineThickness) {
discard;
}
}
我能否在不更改代码的情况下将此着色器与标准统一着色器结合使用?
我计划有一个小工具着色器来渲染线条和各种东西。如果我可以告诉 unity 将这个 Gizmo 着色器渲染在顶部,那将非常实用。
【问题讨论】:
-
我相信我已经做出了像你描述的那样的东西。这是一个男人在经过 Y 轴或 X 轴的某个点时换衣服的地方。我在这台计算机上没有脚本,但如果我正确理解您的需求,请回复,我会在明天或后天用我另一台计算机上的代码回复您。
-
这听起来像一个类似的问题。所以你实际上为此使用了两个单独的着色器?如果我结合两个着色器,我只会得到结果。不过这有点不舒服。