public override void Render(ScriptableRenderContext context, Camera[] cameras)
 {
     if (!MPipeline.RenderPipeline.current)
     {
         return;
     }
     foreach (var camera in cameras)
     {
         PipelineCamera cam = camera.GetComponent <PipelineCamera>();
         if (!cam)
         {
             continue;
         }
         context.SetupCameraProperties(camera);
         cam.RenderSRP(BuiltinRenderTextureType.CameraTarget, ref context);
         context.Submit();
     }
 }
示例#2
0
    private void Awake()
    {
        posBuffer   = new ComputeBuffer(size, sizeof(float3));
        speedBuffer = new ComputeBuffer(size, sizeof(float));
        depthTex    = new RenderTexture(rtSize.x, rtSize.y, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
        Camera cam = GetComponent <Camera>();

        if (!cam)
        {
            cam = gameObject.AddComponent <Camera>();
        }
        depthCam = GetComponent <PipelineCamera>();
        if (!depthCam)
        {
            depthCam = gameObject.AddComponent <PipelineCamera>();
        }
        depthCam.cam           = cam;
        cam.orthographic       = true;
        cam.nearClipPlane      = -transform.localScale.z * 0.5f;
        cam.farClipPlane       = transform.localScale.z * 0.5f;
        cam.orthographicSize   = transform.localScale.y * 0.5f;
        cam.aspect             = transform.localScale.x / transform.localScale.y;
        cam.targetTexture      = depthTex;
        cam.enabled            = false;
        depthCam.renderingPath = PipelineResources.CameraRenderingPath.Unlit;
        NativeArray <float3> data   = new NativeArray <float3>(size, Allocator.Temp);
        NativeArray <float>  speeds = new NativeArray <float>(size, Allocator.Temp);
        Matrix4x4            vp     = GL.GetGPUProjectionMatrix(cam.projectionMatrix, false) * cam.worldToCameraMatrix;
        Matrix4x4            invvp  = vp.inverse;

        for (int i = 0; i < data.Length; ++i)
        {
            data[i]   = invvp.MultiplyPoint(new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f)));
            speeds[i] = Random.Range(0.7f, 1f);
        }
        speedBuffer.SetData(speeds);
        posBuffer.SetData(data);
        MPipeline.RenderPipeline.AddPreRenderCamera(depthCam);
    }
示例#3
0
 public virtual void FrameUpdate(PipelineCamera cam, ref PipelineCommandData data)
 {
 }
示例#4
0
 public virtual void PreRenderFrame(PipelineCamera cam, ref PipelineCommandData data)
 {
 }
示例#5
0
 private void OnEnable()
 {
     target = serializedObject.targetObject as PipelineCamera;
     msb    = new MStringBuilder(50);
 }