上下,左右比率着色器

时间:2014-06-08 16:27:57

标签: unity3d shader pixel-shader

一个基本问题,我无法理解。 我需要创建一个着色器,它像面对比例着色器一样,但也包含上下左右(在屏幕空间中)。

就像这样:
just like this

我想让它在没有原始几何体的情况下工作,只有法线,点位置和相机位置。 我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

这是你的着色器:

#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"

struct app2vert
{
    float4 position: POSITION;
    float3 normal: NORMAL;
};

struct vert2frag
{
    float4 position: POSITION;
    float3 normal: TEXCOORD0;
};

vert2frag vert(app2vert input)
{
    vert2frag output;
    output.position = mul(UNITY_MATRIX_MVP, input.position);
    output.normal = mul((float3x3)UNITY_MATRIX_IT_MV, input.normal);
    return output;
}

float4 frag(vert2frag input) : COLOR
{
    float3 normal = normalize(input.normal);
    float4 output = fixed4(normal.x, normal.y, normal.z, 1.0f);

    return output;
}

答案 1 :(得分:0)

最终基于相机变换完成了基于-90,0,0和0,90,0的2个变换矩阵,并从第2个到场景法线做了一个点积。 给我我想要的确切结果。