Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011
Sign in to follow this  
stevensen

imageshader rasterrung von 2 Kameras

Recommended Posts

Mache schon paar Jahre immer wieder mit Unity rum, hab aber immer wieder meine Probleme.
Ich habe 2 Kameras als Childs an einem Rick und möchte diese beiden Views in einer Ausgabe vereinen. Jetzt soll jedes Bild (der jeweiligen Kamera) mit einer einem Raster(Alpha) versehen werden.
Jeder Kamerabild soll mit einem Raster (veritkale Linies mit 1 Pixel abstand) maskiert werden
Wie fängt man sowas an? Gibts zum Einstieg irgendwo z.B. einen ImageShader mit dem man ein geratestertes Bild anzeigen kann?

Share this post


Link to post
Share on other sites

Wäre eine gute Aufgabe für ein Kameraeffekt-Script.
Hier ein Tutorial mit einem CRT-Effekt:
https://www.alanzucconi.com/2015/07/08/screen-shaders-and-postprocessing-effects-in-unity3d/

Im Endeffekt brauchst du einen Fragmentshader der deinen gewünschten Effekt erzeugt. Shader die in "OnRenderImage" verwendet werden operieren auf einem Quad.
Dieses Quad (Plane) beinhaltet den kompletten Bildschirminhalt.

Share this post


Link to post
Share on other sites

Der Shader war ne harte Nuss, aber hier das Ergebnis:

Shader "Custom/RasterShader" {
	Properties {
		_Color ("Color", Color) = (1,1,1,1)
		_GridColor("Grid Color", Color) = (0,0,0,1)
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
		_Glossiness ("Smoothness", Range(0,1)) = 0.5
		_Metallic ("Metallic", Range(0,1)) = 0.0
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		// Physically based Standard lighting model, and enable shadows on all light types
		#pragma surface surf Standard fullforwardshadows

		// Use shader model 3.0 target, to get nicer looking lighting
		#pragma target 3.0

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
			float4 screenPos;
		};

		half _Glossiness;
		half _Metallic;
		fixed4 _Color;
		fixed4 _GridColor;

		// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
		// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
		// #pragma instancing_options assumeuniformscaling
		UNITY_INSTANCING_CBUFFER_START(Props)
			// put more per-instance properties here
		UNITY_INSTANCING_CBUFFER_END

		void surf (Input IN, inout SurfaceOutputStandard o) {
			// Albedo comes from a texture tinted by color
			fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
			float _screenX = _ScreenParams.x * IN.screenPos.x;
			float _screenY = _ScreenParams.y * IN.screenPos.y;
			float3 _color = c.rgb;
			for (int i = 0; i < _ScreenParams.x; i++) {
				if (_screenX > i && _screenX <= i+1) {
					float stepx = i;
					if (fmod(stepx, 2) == 0) _color = _GridColor;
				}
			}

			o.Albedo = _color;
			// Metallic and smoothness come from slider variables
			o.Metallic = _Metallic;
			o.Smoothness = _Glossiness;
			o.Alpha = c.a;
		}
		ENDCG
	}
	FallBack "Diffuse"
}

VNShnck.png

(Das Bild ist durch den Forumsviewer verfälscht, 2x draufklicken dann sieht man das Original)

Share this post


Link to post
Share on other sites

Vielen Dank für die Antworten!

Ich habs mal ausprobiert aber es geht irgendwie nicht.

Hier mal was ich gefunden habe. Also wenn ich das Material auf eine Textur(Box) lege, funktioniert der Alpha teilweise richtig, wenn ich das Material mit dem Shader als Imageshader auf die Kamera lege sieht das im ersten Moment auch noch richtig aus , dann aber ändert sich die Ansicht des Alpha, und wenn ich z.B. das Tileing des Alpha verändere,verschmiert er. Auf der Textur (auf einem Mesh zb) sieht das Tiling weiterhin korrekt aus.

Die Settexture und combine Funktionen etc sind ja veraltet, gibt's irgendwo mal Tutorials für Imageshader mit der aktuellen empfolenen Methode? 

 

Shader "Custom/testShader" {
	Properties{
		_Tint("Tint Color", Color) = (.9, .9, .9, 1.0)
		_TexMat1("Base (RGB)", 2D) = "white" {}
		_PathMask1("Path Mask (A)", 2D) = "" {}

		_TexMat2("Base (RGB)", 2D) = "white" {}
		_PathMask2("Path Mask (B)", 2D) = "" {}

		_Blend("Blend", Range(0.0,1.0)) = 0.0
	}

		Category{
		ZWrite On
		Alphatest Greater 0
		Tags{ Queue = Transparent RenderType = Transparent }
		Blend SrcAlpha OneMinusSrcAlpha
		ColorMask RGB
		SubShader{
		Pass{

		Material{
					Diffuse[_Tint]
					Ambient[_Tint]
				}
		Lighting On

		SetTexture[_TexMat1]{ combine texture }
		SetTexture[_PathMask1]{ combine previous, texture }
		SetTexture[_TexMat2]{ constantColor(0,0,0,[_Blend]) combine texture lerp(constant) previous }
		SetTexture[_TexMat2]{ combine previous + -primary, previous * primary }


	}		// end pass
	} // end shader
		FallBack " Diffuse", 1
	}
}

 

Share this post


Link to post
Share on other sites

Ich weis immer noch nicht, was du eigentlich genau haben möchtest. Was meinst du mit Alpha, was verwendest du für Texturen? Was funktioniert an meinem Shader nicht?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×