What to do with Shaders....?!
I am one of the many people who want to have the effect of two or more shaders combined, and asking for help.
Apart from 1 complex solution given to a college of this forum, all the answers given are "There is no easy way." and "learn all about shaders.." "..to do what to do.". Followed by links, mostly in unity documentation.
I though, that's what I should do! After a week I have come to nothing. I've read the documentation, I have read "Packt's: Unity Shaders And Effects CookBook" and other manuals. It seems to me that everything is written for people who know what they read and just have no easy way to come to the answer. Well, you cannot talk to me about light probs and lighting model options and their parameters if you don't make clear what lighting does, what surf{} does, what, in god's name, is this "c = pow((_EmissiveColor + _AmbientColor), _MySliderValue);" Just the : [ replace --> see the results --> "Wow, very nice" --> next chapter --> ....] Doesn't work.
So please, is any way to learn about shaders in an understandable way, from scratch?
By the way, if someone can join / combine the followed two shaders, I will own him/her..
Shader "Custom/ChromaKeys" {
Properties{
_MainTex("Base (RGB)", 2D) = "white" {}
_AlphaValue("Alpha Value", Range(0.0,1.0)) = 1.0
}
SubShader{
Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert alpha
sampler2D _MainTex;
float _AlphaValue;
struct Input {
float2 uv_MainTex;
};
void surf(Input IN, inout SurfaceOutput o) {
half4 c = tex2D(_MainTex, IN.uv_MainTex);
o.Emission = c.rgb;
// Green screen level - leaves minor green glow
if ((c.g <= 0.65f && c.b >= 0.5f && c.r <= 0.65f && _AlphaValue == 0.0)|| (c.g >= 0.5f && c.r <= 0.65f && c.b <= 0.65f && _AlphaValue == 0.0))
{
o.Alpha = 0.0;
}
else
{
o.Alpha = c.a;
}
}
ENDCG
}
FallBack "Diffuse"
}
and
Shader "Stencils/Portal_1/Transparent/Diffuse" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
SubShader {
Stencil {
Ref 1
Comp Equal
Pass Keep
Fail Keep
}
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 200
CGPROGRAM
#pragma surface surf Lambert alpha
sampler2D _MainTex;
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
Fallback "Transparent/VertexLit"
}
just want to "stencil" (render) a certain area of a plane, that shows/projects the web camera input picture/video on it, (keeping the rest plane transparent), and apply alpha removal with chroma key to web camera's picture/video .*
Thanx
Your answer
![](https://koobas.hobune.stream/wayback/20220612113812im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to skip color for part of texture? 1 Answer
Trying to write a 2d mask shader with stencil 0 Answers
Stencil Shader not working with Raw Image UI 0 Answers
how to hide intersections between meshes 0 Answers
Stencils and zTest be buggin 0 Answers