質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1166閲覧

OnRenderImageでBlitした結果がゲーム画面に反映されない

StellaSplitter

総合スコア37

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2022/10/17 03:27

編集2022/10/17 16:19

前提

カメラにアタッチしたコンポーネント内の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}

シーンビュー(色収差のエフェクトをかけています)
SceneView
ゲームビュー
GameView
カメラ
Camera_Inspector
Canvas
Canvas_Inspector

試したこと

「OnRenderImage Game 反映されない」など多数のワードで検索を行いましたが、情報が発見できませんでした。

補足情報(FW/ツールのバージョンなど)

Windows 11 21H2
Unity 2021.3.11f1 Personal

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
3Dプロジェクトでは正常に反映されるので3DプロジェクトにはないCanvasの設定が問題だと思い色々と試してみたところ、
イメージ説明
Render ModeWorld Spaceにしてあげればエフェクトがかかるようです。
イメージ説明

投稿2022/10/17 07:19

StellaSplitter

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問