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(); } }
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); }
public virtual void FrameUpdate(PipelineCamera cam, ref PipelineCommandData data) { }
public virtual void PreRenderFrame(PipelineCamera cam, ref PipelineCommandData data) { }
private void OnEnable() { target = serializedObject.targetObject as PipelineCamera; msb = new MStringBuilder(50); }