Mit shader für Kamera Rendern in der Einheit
Ich geschrieben habe, einen shader und es funktioniert, wenn ich habe es in einer Ebene, die sich vor der Kamera (in diesem Fall die Kamera nicht über shader). aber dann füge ich diesen shader zu der Kamera, es zeigt nichts auf dem Bildschirm. Hier ist mein code, könnten Sie lassen Sie mich wissen, wie kann ich es ändern, um kompatibel zu sein mit der Kamera.RenderWithShader Methode?
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
}
InformationsquelleAutor user1021110 | 2013-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass das, was Sie fordern, ist ein Austausch-shader, die Schattierungen alles in die Kamera mit Ihrem shader.
Bin ich richtig?
Wenn ja, sollte diese Arbeit
hier ist etwas mehr info:
http://docs.unity3d.com/Documentation/Components/SL-ShaderReplacement.html
Edit: erwarten Sie, dass die gesamte Kamera zu verziehen wie ein Objektiv-Effekt? Weil Ihr nicht gehen, um zu bekommen, dass mit einem shader wie diese von selbst, denn so wie es da steht es wird nur auf Objekte anwenden und wie Sie Ihre Ebene, aber nicht die volle Kamera-Ansicht, dass erfordert, dass eine post-Bild-Effekt. Ersten Ihren müssen Unity Pro. Wenn Sie tun, ein Bild importieren, das Effekte Paket und Blick auf die fisheye-Skript. Sehen Sie, wenn Sie können duplizieren Sie die fisheye-Skript mit Ihrer eigenen shader. Wenn ich legte die fisheye-shader, der ohne seine entsprechenden script-ich war immer der exakt gleiche Ergebnisse, wie Sie mit Ihrer aktuellen shader-code. Wenn Sie nicht haben, Zugang zu den Bild-Effekte-Paket lassen Sie mich wissen und ill senden Sie Ihre fisheye-Skripten und Shadern.
Finden Sie unter den folgenden link, Warnung Im entfernen der Datei in 24 Stunden: dropbox.com/s/rs8nx7fn1lgkg70/...
Danke. Ich habe heruntergeladen es. Ich lasse das Ergebnis hier. Danke nochmal für deine Hilfe.
Ich hoffe, es klappt, vergessen Sie nicht zu akzeptieren, wenn die Antwort war hilfreich 🙂
Ich danke Ihnen so sehr für Ihre Hilfe. Es funktioniert perfekt!
InformationsquelleAutor MichaelTaylor3D
Ich habe versucht, mehrere Möglichkeiten, so weit. Der shader an sich funktioniert sehr gut, wenn ich es auf eine Ebene, die sich vor der Kamera. Aber wenn ich es in die Hauptkamera, indem Sie folgenden code, nichts auf dem Bildschirm sichtbar! (nur ein leerer Bildschirm), ohne Fehlermeldung. Ich weisen Sie die oben genannten shader repl variable.
Nur für Ihre Informationen, die über shader verzerrt die Szene auf eine Trapez-Form.
Nein. Es ist nicht. Sehen Sie bitte meine Haupt-Frage in der Einheit website. link
Nevermind, ich glaube ich habe herausgefunden, was passiert ist, siehe meine Antwort.
InformationsquelleAutor user1021110