Version: 2022.1

RenderStateBlock

struct in UnityEngine.Rendering

切换到手册

描述

A set of values that Unity uses to override the GPU's render state.

When you call ScriptableRenderContext.DrawRenderers, you can use this to override the render state for some or all of the geometry.

Note: You must set mask to tell Unity which parts of the render state to override to apply. For example, to apply the values in blendState, mask must include RenderStateMask.Blend.

using UnityEngine;
using UnityEngine.Rendering;

public class OverrideRenderStateExample { ScriptableRenderContext scriptableRenderContext;

// Placeholder data DrawingSettings exampleDrawingSettings; CullingResults exampleCullingResults = new CullingResults(); FilteringSettings exampleFilteringSettings = new FilteringSettings();

public void OverrideRenderState() { // Tell Unity how to override the render state when it draws the geometry. var stateBlock = new RenderStateBlock(RenderStateMask.Depth); stateBlock.depthState = new DepthState(true, CompareFunction.LessEqual);

// Schedule the drawing operation. scriptableRenderContext.DrawRenderers(exampleCullingResults, ref exampleDrawingSettings, ref exampleFilteringSettings, ref stateBlock);

// Perform all scheduled tasks, in the order that they were scheduled. scriptableRenderContext.Submit(); } }

变量

blendState指定新混合状态。
depthState指定新深度状态。
maskSpecifies which parts of the GPU's render state to override.
rasterState指定新光栅状态。
stencilReferenceThe value to be compared against and/or the value to be written to the buffer, based on the stencil state.
stencilState指定新模板状态。

构造函数

RenderStateBlock使用指定遮罩创建新的渲染状态块。
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961