やりたいこと
SceneViewとGameViewとで色合いが違うのを何とかしたい
上がSceneViewで下がGameView
下画面の白部分はカメラコンポーネントのバックグラウンドなので関係なし
###やったこと
こちらはwebm動画をクロマキーで切り抜いて表示させたもので、VideoPlayerコンポーネントを使用している
その表示方法としてRenderTextureで表示させているが、MaterialOverrideやAPIOnlyなどに変えて表示させてみたが変化なし。
光源がないからと考え、spotlightなどLightオブジェクトを作成しても変化なし。
新たにプロジェクトを作成して該当の部分だけ状況を同じにしてみると、カメラを動かすとGameViewにも色がきちんと表示されたため、カメラの位置関係が問題かと考えたが関係がなかった。
私用しているmaterialとshaderのスクリプト
material
ChromaKey_Standard_Transparent(テクスチャにつけているshader)
shader
1Shader "ChromaKey/Standard/Transparent" 2{ 3 4Properties 5{ 6 [Header(Material)] 7 _Color ("Color", Color) = (1, 1, 1, 1) 8 _MainTex ("Albedo (RGB)", 2D) = "white" {} 9 _Glossiness ("Smoothness", Range(0, 1)) = 0.5 10 _Metallic ("Metallic", Range(0, 1)) = 0.0 11 [Enum(UnityEngine.Rendering.CullMode)] _Cull("Culling", Int) = 2 12 13 [Header(Chroma Key)] 14 _ChromaKeyColor("Color", Color) = (0.0, 0.0, 1.0, 0.0) 15 _ChromaKeyHueRange("Hue Range", Range(0, 1)) = 0.1 16 _ChromaKeySaturationRange("Saturation Range", Range(0, 1)) = 0.5 17 _ChromaKeyBrightnessRange("Brightness Range", Range(0, 1)) = 0.5 18} 19 20SubShader 21{ 22 Tags 23 { 24 "Queue" = "Transparent" 25 "RenderType" = "Transparent" 26 "IgnoreProjector" = "True" 27 "PreviewType" = "Plane" 28 } 29 30 Cull [_Cull] 31 32 CGPROGRAM 33 #pragma surface surf Standard alpha:blend addshadow fullforwardshadows 34 #pragma target 3.0 35 #define CHROMA_KEY_ALPHA 36 #include "./ChromaKey_Standard.cginc" 37 ENDCG 38 39 Pass 40 { 41 Tags { "LightMode" = "ShadowCaster" } 42 ZWrite On 43 ZTest LEqual 44 Cull Off 45 46 CGPROGRAM 47 #include "./Chromakey_Shadow.cginc" 48 #pragma vertex vert 49 #pragma fragment frag 50 #pragma multi_compilecaster 51 ENDCG 52 } 53} 54 55FallBack "Diffuse" 56 57}
ChromaKey_Standard(ChromaKey_Standard_TransParentで使われているcgincファイル)
cginc
1#ifndef CHROMA_KEY_STANDARD_CGINC 2#define CHROMA_KEY_STANDARD_CGINC 3 4#include "UnityCG.cginc" 5#include "./ChromaKey.cginc" 6 7sampler2D _MainTex; 8 9struct Input 10{ 11 float2 uv_MainTex; 12}; 13 14half _Glossiness; 15half _Metallic; 16fixed4 _Color; 17 18void surf(Input IN, inout SurfaceOutputStandard o) 19{ 20 fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; 21#ifdef CHROMA_KEY_ALPHA 22 ChromaKeyApplyAlpha(c); 23#else 24 ChromaKeyApplyCutout(c); 25#endif 26 o.Albedo = c.rgb; 27 o.Metallic = _Metallic; 28 o.Smoothness = _Glossiness; 29 o.Alpha = c.a; 30} 31 32#endif
ChromaKey.cginc(ChromaKey_Standardで使われているcgincファイル)
cginc
1#ifndef CHROMA_KEY_COMMON_CGINC 2#define CHROMA_KEY_COMMON_CGINC 3 4// Refer to the following website regarding conversions between RGB and HSV: 5// https://www.laurivan.com/rgb-to-hsv-to-rgb-for-shaders/ 6 7float4 _ChromaKeyColor; 8float _ChromaKeyHueRange; 9float _ChromaKeySaturationRange; 10float _ChromaKeyBrightnessRange; 11 12inline float3 ChromaKeyRGB2HSV(float3 rgb) 13{ 14 float4 k = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); 15 float4 p = lerp(float4(rgb.bg, k.wz), float4(rgb.gb, k.xy), step(rgb.b, rgb.g)); 16 float4 q = lerp(float4(p.xyw, rgb.r), float4(rgb.r, p.yzx), step(p.x, rgb.r)); 17 float d = q.x - min(q.w, q.y); 18 float e = 1e-10; 19 return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); 20} 21 22inline float3 ChromaKeyHSV2RGB(float3 hsv) 23{ 24 float4 k = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); 25 float3 p = abs(frac(hsv.xxx + k.xyz) * 6.0 - k.www); 26 return hsv.z * lerp(k.xxx, clamp(p - k.xxx, 0.0, 1.0), hsv.y); 27} 28 29inline float3 ChromaKeyCalcDiffrence(float4 col) 30{ 31 float3 hsv = ChromaKeyRGB2HSV(col); 32 float3 key = ChromaKeyRGB2HSV(_ChromaKeyColor); 33 return abs(hsv - key); 34} 35 36inline float3 ChromaKeyGetRange() 37{ 38 return float3(_ChromaKeyHueRange, _ChromaKeySaturationRange, _ChromaKeyBrightnessRange); 39} 40 41inline void ChromaKeyApplyCutout(float4 col) 42{ 43 float3 d = ChromaKeyCalcDiffrence(col); 44 if (all(step(0.0, ChromaKeyGetRange() - d))) discard; 45} 46 47inline void ChromaKeyApplyAlpha(inout float4 col) 48{ 49 float3 d = ChromaKeyCalcDiffrence(col); 50 if (all(step(0.0, ChromaKeyGetRange() - d))) discard; 51 col.a *= saturate(length(d / ChromaKeyGetRange()) - 1.0); 52} 53 54#endif

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 03:09
2020/02/18 07:16
2020/02/18 19:22
2020/02/19 13:26
2020/02/19 21:01
2020/02/20 02:08
2020/02/20 06:29