gpt4 book ai didi

unity3d - 在 Unity 中使用着色器进行相机渲染

转载 作者:行者123 更新时间:2023-12-02 00:04:14 27 4
gpt4 key购买 nike

我已经编写了一个着色器,当我将它添加到位于相机前面的平面时它工作正常(在这种情况下相机没有着色器)。但是后来我将这个着色器添加到相机,它没有在屏幕上显示任何内容。这是我的代码,你能告诉我如何更改它以与 Camera.RenderWithShader 方法兼容吗?

Shader "Custom/she1" {
Properties {
top("Top", Range(0,2)) = 1
bottom("Bottom", Range(0,2)) = 1
}
SubShader {

// Draw ourselves after all opaque geometry
Tags { "Queue" = "Transparent" }

// Grab the screen behind the object into _GrabTexture
GrabPass { }

// Render the object with the texture generated above
Pass {


CGPROGRAM
#pragma debug
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0

sampler2D _GrabTexture : register(s0);
float top;
float bottom;

struct data {

float4 vertex : POSITION;

float3 normal : NORMAL;

};



struct v2f {

float4 position : POSITION;

float4 screenPos : TEXCOORD0;

};



v2f vert(data i){

v2f o;

o.position = mul(UNITY_MATRIX_MVP, i.vertex);

o.screenPos = o.position;

return o;

}



half4 frag( v2f i ) : COLOR

{

float2 screenPos = i.screenPos.xy / i.screenPos.w;
float _half = (top + bottom) * 0.5;
float _diff = (bottom - top) * 0.5;
screenPos.x = screenPos.x * (_half + _diff * screenPos.y);
screenPos.x = (screenPos.x + 1) * 0.5;
screenPos.y = 1-(screenPos.y + 1) * 0.5 ;
half4 sum = half4(0.0h,0.0h,0.0h,0.0h);
sum = tex2D( _GrabTexture, screenPos);
return sum;

}
ENDCG
}
}

Fallback Off
}

最佳答案

我认为您要求的是一个替换着色器,它可以使用您的着色器对相机中的所有内容进行着色。

我说的对吗?

如果是这样,这应该可以工作

Camera.main.SetReplacementShader(Shader.Find("Your Shader"),"RenderType")

这里有更多信息: http://docs.unity3d.com/Documentation/Components/SL-ShaderReplacement.html

编辑:您是否希望整个相机像镜头效果一样变形?因为您不会单独使用这样的着色器来获得它,因为就目前而言,它只会适用于像您的飞机这样的对象,而不适用于完整的相机 View ,这需要后期图像效果。首先你需要Unity Pro。如果这样做,请导入图像效果包并查看鱼眼脚本。看看您是否可以使用自己的着色器复制鱼眼脚本。当我在没有相应脚本的情况下附加鱼眼着色器时,我得到的结果与您使用当前着色器代码得到的结果完全相同。如果您无法访问图像效果包,请告诉我,我会向您发送鱼眼脚本和着色器。

关于unity3d - 在 Unity 中使用着色器进行相机渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19433123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com