一个基本问题,我无法理解。 我需要创建一个着色器,它像面对比例着色器一样,但也包含上下左右(在屏幕空间中)。
就像这样:
我想让它在没有原始几何体的情况下工作,只有法线,点位置和相机位置。 我该怎么做呢?
答案 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个到场景法线做了一个点积。 给我我想要的确切结果。