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

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

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

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

Q&A

解決済

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

StellaSplitter
StellaSplitter

総合スコア37

C#

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0グッド

0クリップ

611閲覧

投稿2022/10/17 03:27

編集2022/10/17 03:44

前提

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

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

自己解決

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

投稿2022/10/17 07:19

StellaSplitter

総合スコア37

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.83%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。