srp中阴影

https://blog.csdn.net/HerbertD/article/details/51198537

平行光的阴影绘制:
1、申请rt:GetTemporaryRT
2、设置目标:SetRenderTarget
3、清空画布:ClearRenderTarget
4、执行命令:ExecuteCommandBuffer
5、清空命令:Clear

6、计算矩阵:ComputeDirectionalShadowMatricesAndCullingPrimitives
7、设置矩阵:SetViewProjectionMatrices
8、执行命令:ExecuteCommandBuffer
9、清空命令:Clear
10、画阴影:DrawShadows

总的流程代码:

	public void Setup (
		ScriptableRenderContext context, CullingResults cullingResults,
		ShadowSettings shadowSettings
	) {
		this.cullingResults = cullingResults;
		buffer.BeginSample(bufferName);
		shadows.Setup(context, cullingResults, shadowSettings);
		SetupLights();
		shadows.Render();
		buffer.EndSample(bufferName);
		context.ExecuteCommandBuffer(buffer);
		buffer.Clear();
	}

也是需要cullingresults的。

然后阴影绘制完:

public void Render (
		ScriptableRenderContext context, Camera camera,
		bool useDynamicBatching, bool useGPUInstancing,
		ShadowSettings shadowSettings
	) {
		this.context = context;
		this.camera = camera;

		PrepareBuffer();
		PrepareForSceneWindow();
		if (!Cull(shadowSettings.maxDistance)) {
			return;
		}
		
		buffer.BeginSample(SampleName);
		ExecuteBuffer();
		lighting.Setup(context, cullingResults, shadowSettings);
		buffer.EndSample(SampleName);
		Setup();
		DrawVisibleGeometry(useDynamicBatching, useGPUInstancing);
		DrawUnsupportedShaders();
		DrawGizmos();
		lighting.Cleanup();
		Submit();
	}

context,可以设置矩阵;
commandbuffer,也可以设置矩阵;
context可以绘制阴影,context还可以绘制render;

context可以绘制阴影

ShadowDrawingSettings(CullingResults cullingResults, int lightIndex);
context.DrawShadows(ref shadowSettings);

context还可以绘制render

context.DrawRenderers(cullingResults, ref drawingSettings, ref filteringSettings);

你看到没有,这个两个都有一个绘制的内容:cullingResults.
但是,有个不同点,就是绘制render的时候,多了两个参数:drawsettings和filteringsettings。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值