Table of Contents

Camera

Camera.SetReplacementShader

SetReplacementShader will not render objects if their original materials don't contain any properties required by the replacement shader. For example, if your replacement shader uses _MainTex, and there is an object in the scene that doesn't have _MainTex, it won't be rendered at all.

SetReplacementShader will use the Materials of the existing objects in the scene1). However, it only seems to apply keywords that are registered as multi_compile. Per-material keywords registered with shader_feature do not get applied. For example, if you call SetReplacementShader with the default URP Lit.shader, these keywords will all be turned off:

Shaders can be replaced in the SceneView using SceneView.SetSceneViewShaderReplace.


Camera.targetTexture

According to the Unity Documentation: “When rendering into a texture, the camera always renders into the whole texture; effectively rect and pixelRect are ignored.”

This behavior is inconsistent across target platforms. On windows, the camera will use the rect and/or pixelRect. On OSX, Android, and iOS, the camera rect will be ignored. (tested on Built-in Render Pipeline, Unity 6000.0.34f1)

If you have need to render into a sub-rect on render texture on those platforms, there are workarounds:

1)
all of the textures and instance data is still sent to the replaced