Нашёл вот это:http://technology.blurst.com/off-screen-particle-optimization/
И сделать не получилось
Помогите пожалуйста разобраться со скриптом
Вот скрипт который у меня получился:
Синтаксис:
Используется javascript
static var downsampleFactor : int = this.offScreenParticlesOptions.downsampleFactor;
static var destination = 10;
static var source = 10;
static var particlesRT : RenderTexture = RenderTexture.GetTemporary(Screen.width / downsampleFactor, Screen.height / downsampleFactor, 0);
static var ppCamera : Camera = PostProcessingHelper.GetPPCamera();
static var camera : Camera;
ppCamera.depthTextureMode = DepthTextureMode.None;
ppCamera.cullingMask = this.offScreenParticlesOptions.layerMask.value;
ppCamera.targetTexture = particlesRT;
ppCamera.clearFlags = CameraClearFlags.SolidColor;
ppCamera.backgroundColor = Color.black;
private static var ppCameraGO:GameObject;
static function GetPPCamera():Camera
{
if(!ppCameraGO) {
ppCameraGO = new GameObject("Post Processing Camera", Camera);
ppCameraGO.camera.enabled = false;
ppCameraGO.hideFlags = HideFlags.HideAndDontSave;
}
return ppCameraGO.camera;
}
function Awake(){
this.Camera.depthTextureMode = DepthTextureMode.Depth;
}
static function PostProcessingHelper (){
Shader.SetGlobalVector("_CameraDepthTexture_Size", Vector4(this.camera.pixelWidth, this.camera.pixelHeight, 0.0, 0.0)); // some data about the depth buffer we need to send the shaders
depthCamera.RenderWithShader(Shader.Find("Hidden/Off-Screen Particles Replace"), "RenderType");
var blendMaterial:Material = PostProcessingHelper.GetMaterial(Shader.Find("Hidden/Off-Screen Particles Composite"));
var texelOffset:Vector2 = Vector2.Scale(source.GetTexelOffset(), Vector2(source.width, source.height));
Graphics.BlitMultiTap(particlesRT, source, blendMaterial, texelOffset);
RenderTexture.ReleaseTemporary(particlesRT);
Graphics.Blit(source, destination);
}
static var destination = 10;
static var source = 10;
static var particlesRT : RenderTexture = RenderTexture.GetTemporary(Screen.width / downsampleFactor, Screen.height / downsampleFactor, 0);
static var ppCamera : Camera = PostProcessingHelper.GetPPCamera();
static var camera : Camera;
ppCamera.depthTextureMode = DepthTextureMode.None;
ppCamera.cullingMask = this.offScreenParticlesOptions.layerMask.value;
ppCamera.targetTexture = particlesRT;
ppCamera.clearFlags = CameraClearFlags.SolidColor;
ppCamera.backgroundColor = Color.black;
private static var ppCameraGO:GameObject;
static function GetPPCamera():Camera
{
if(!ppCameraGO) {
ppCameraGO = new GameObject("Post Processing Camera", Camera);
ppCameraGO.camera.enabled = false;
ppCameraGO.hideFlags = HideFlags.HideAndDontSave;
}
return ppCameraGO.camera;
}
function Awake(){
this.Camera.depthTextureMode = DepthTextureMode.Depth;
}
static function PostProcessingHelper (){
Shader.SetGlobalVector("_CameraDepthTexture_Size", Vector4(this.camera.pixelWidth, this.camera.pixelHeight, 0.0, 0.0)); // some data about the depth buffer we need to send the shaders
depthCamera.RenderWithShader(Shader.Find("Hidden/Off-Screen Particles Replace"), "RenderType");
var blendMaterial:Material = PostProcessingHelper.GetMaterial(Shader.Find("Hidden/Off-Screen Particles Composite"));
var texelOffset:Vector2 = Vector2.Scale(source.GetTexelOffset(), Vector2(source.width, source.height));
Graphics.BlitMultiTap(particlesRT, source, blendMaterial, texelOffset);
RenderTexture.ReleaseTemporary(particlesRT);
Graphics.Blit(source, destination);
}