Q&A
前提
カメラにアタッチしたコンポーネント内のOnRenderImageがGameビューに反映されません。
Sceneビューには反映されています。
Shaderとそのマテリアルは自作ではなくネットで紹介されていたものです。
実現したいこと
- OnRenderImageで処理した内容をGameビューにも反映できるようにする
該当のソースコードと画像
csharp:PostEffectInCamera.cs
1using UnityEngine; 2 3namespace Assets 4{ 5 [ExecuteInEditMode, ImageEffectAllowedInSceneView] 6 public class PostEffectInCamera : MonoBehaviour 7 { 8 [SerializeField] 9 private Material _material; 10 11 private void OnRenderImage(RenderTexture source, RenderTexture dest) 12 { 13 Graphics.Blit(source, dest, _material); 14 } 15 } 16}
シェーダー
Chromatic.shader
1Shader "Custom/Chromatic aberration" 2{ 3 Properties 4 { 5 _MainTex ("Texture", 2D) = "white" {} 6 7 [Header(Red)] 8 _RedX ("Offset X", Range(-0.5, 0.5)) = 0.0 9 _RedY ("Offset Y", Range(-0.5, 0.5)) = 0.0 10 11 [Header(Green)] 12 _GreenX ("Offset X", Range(-0.5, 0.5)) = 0.0 13 _GreenY ("Offset Y", Range(-0.5, 0.5)) = 0.0 14 15 [Header(Blue)] 16 _BlueX ("Offset X", Range(-0.5, 0.5)) = 0.0 17 _BlueY ("Offset Y", Range(-0.5, 0.5)) = 0.0 18 } 19 SubShader 20 { 21 Tags { "RenderType"="Opaque" } 22 23 Pass 24 { 25 CGPROGRAM 26 #pragma vertex vert_img 27 #pragma fragment frag 28 29 #include "UnityCG.cginc" 30 31 sampler2D _MainTex; 32 float _RedX; 33 float _RedY; 34 float _GreenX; 35 float _GreenY; 36 float _BlueX; 37 float _BlueY; 38 39 fixed4 frag (v2f_img i) : SV_Target 40 { 41 fixed4 col = fixed4(1, 1, 1, 1); 42 43 float2 red_uv = i.uv + float2(_RedX, _RedY); 44 float2 green_uv = i.uv + float2(_GreenX, _GreenY); 45 float2 blue_uv = i.uv + float2(_BlueX, _BlueY); 46 47 col.r = tex2D(_MainTex, red_uv).r; 48 col.g = tex2D(_MainTex, green_uv).g; 49 col.b = tex2D(_MainTex, blue_uv).b; 50 51 return col; 52 } 53 ENDCG 54 } 55 } 56}
シーンビュー(色収差のエフェクトをかけています)
ゲームビュー
カメラ
Canvas
試したこと
「OnRenderImage Game 反映されない」など多数のワードで検索を行いましたが、情報が発見できませんでした。
補足情報(FW/ツールのバージョンなど)
Windows 11 21H2
Unity 2021.3.11f1 Personal
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。