手冊:材質/RenderMaterialV1

出自Minecraft基岩版开发Wiki
    •  states:定義了該材質的繪製狀態列表,決定了該材質提供的功能。該欄位的前綴會影響該欄位的繼承型別。此時不加入前綴,為替換模式,將替換掉所繼承的材質中所有的繪製狀態。
    •  +states:定義了該材質相比於所繼承的材質新增加的繪製狀態列表。此時前綴為+,為增加模式,只有在 states欄位不存在時才會解析,先於 -states的解析。
    •  -states:定義了該材質相比於所繼承的材質要刪去的繪製狀態列表。此時前綴為-,為刪去模式,只有在 states欄位不存在時才會解析。
      • :一個繪製狀態。如果在所有 [+-]states解析結束時列表中存在EnableAlphaToCoverage繪製狀態,將自動為該材質加入ALPHA_TO_COVERAGE宏定義,該操作先於 [+-]defines的解析。
    •  vertexShader:定義了該材質的頂點著色器路徑,格式通常為shaders/<shader_name>.vertex。引擎會為GFX API插入中間值和追加後綴,對於HLSL,會在shaders後插入/hlsl,並在檔案末追加.hlsl副檔名以構成完整路徑;對於GLSL,會在shaders後插入/glsl以構成完整路徑。該追加操作適用於以下所有型別的著色器路徑。
    •  fragmentShader:定義了該材質的片元著色器路徑,格式通常為shaders/<shader_name>.fragment
    •  geometryShader:定義了該材質的幾何著色器路徑,格式通常為shaders/<shader_name>.geometry
    •  vrGeometryShader:定義了該材質的VR幾何著色器路徑,格式通常為shaders/<shader_name>.geometry
    •  defines:定義了該材質使用的宏定義列表,用於配合啟動或切換著色器程式碼中的特定部分。該欄位的前綴會影響該欄位的繼承型別。此時不加入前綴,為替換模式,將替換掉所繼承的材質中所有的宏定義。
    •  +defines:定義了該材質相比於所繼承的材質新增加的宏定義列表。此時前綴為+,為增加模式,只有在 defines欄位不存在時才會解析,先於 -defines的解析。
    •  -defines:定義了該材質相比於所繼承的材質要刪去的宏定義列表。此時前綴為-,為刪去模式,只有在 defines欄位不存在時才會解析。
    •  depthFunc:該材質的深度模板測試中使用的深度函式,是一個比較函式,負責源深度值與深度緩衝區比較。
    •  depthStencilFaceName:該材質的模板測試中使用的面的名稱,目前為一個佔位符。
    •  frontFace:該材質正面的模板測試。
      •  stencilFunc:該材質正面的模板函式,是一個比較函式,負責模板參考值與模板緩衝區比較。
      •  stencilFailOp:該材質正面的模板失敗操作,是一個模板操作,在模板測試失敗時執行。
      •  stencilDepthFailOp:該材質正面的深度失敗操作,是一個模板操作,在模板測試透過但深度測試失敗時執行。
      •  stencilPassOp:該材質正面的模板透過操作,是一個模板操作,在模板測試與深度測試皆透過時執行。
    •  backFace:該材質背面的模板測試。
      •  stencilFunc:該材質背面的模板函式,是一個比較函式,負責模板參考值與模板緩衝區比較。
      •  stencilFailOp:該材質背面的模板失敗操作,是一個模板操作,在模板測試失敗時執行。
      •  stencilDepthFailOp:該材質背面的深度失敗操作,是一個模板操作,在模板測試透過但深度測試失敗時執行。
      •  stencilPassOp:該材質背面的模板透過操作,是一個模板操作,在模板測試與深度測試皆透過時執行。
    •  stencilRefOverride:該材質的模板測試中是否使用參考值覆寫,如果為真,將使用 stencilRef的值為模板測試參考值,預設為假。
    •  stencilRef:該材質的模板測試的參考值覆寫,接受非負整數。存在該欄位時 stencilRefOverride預設為真。
    •  stencilReadMask:該材質的模板測試的讀取掩碼,會在模板測試比較前與參考值進行按位與運算,接受非負整數。
    •  stencilWriteMask:該材質的模板測試的寫入掩碼,會在模板測試比較後與參考值進行按位與運算,接受非負整數。
    •  blendSrc:顏色混合前源顏色需要採取的操作,是一個混合目標,預設為SourceAlpha
    •  blendDst:顏色混合前緩衝區中的目標顏色需要採取的操作,是一個混合目標,預設為OneMinusSrcAlpha
    •  alphaSrc:透明度混合前源顏色需要採取的操作,是一個混合目標,預設為One
    •  alphaDst:透明度混合前緩衝區中的目標顏色需要採取的操作,是一個混合目標,預設為OneMinusSrcAlpha
    •  samplerStates:定義了該材質使用的紋理採樣狀態列表,用於組態紋理的過濾與折繞。該欄位的前綴會影響該欄位的繼承型別。此時不加入前綴,為替換模式,將替換掉所繼承的材質中所有的紋理採樣狀態。
    •  +samplerStates:定義了該材質相比於所繼承的材質新增加的紋理採樣狀態列表。此時前綴為+,為增加模式,只有在 samplerStates欄位不存在時才會解析。
    •  -samplerStates:紋理採樣狀態列表的刪去功能尚不可用,該欄位此時為佔位符。
      •  [0-7]:一個紋理採樣狀態。一個材質最多只支援存在8個紋理採樣狀態。
        •  samplerIndex:採樣索引,代表第幾張紋理。
        •  textureFilter紋理過濾模式,決定源紋理與實際顯示的縮放過的紋理間點的映射關係。
        •  textureWrap紋理折繞模式,決定了紋理的UV超過[0,1]時折行或環繞的模式。
        •  shaderStage著色器階段
        •  comparisonFunc比較函式
    •  vertexFields:該材質使用的頂點場列表,用於決定該材質繪製時網格的每個頂點都存有何種資訊。
    •  depthBias:該材質光柵化時使用的深度偏差。
    •  slopeScaledDepthBias:該材質光柵化時使用的斜率縮放深度偏差。
    •  depthBiasOGL:OpenGL平台上該材質光柵化時使用的深度偏差。
    •  slopeScaledDepthBiasOGL:OpenGL平台上該材質光柵化時使用的斜率縮放深度偏差。
    •  msaaSupport:材質光柵化時是否支援多重採樣抗鋸齒(MSAA),支援的值見MSAA支援
    •  primitiveMode:該材質的基本圖元模式,預設為TriangleList
    •  renderTargetFormats:該材質的繪製目標格式列表。
      • :一個繪製目標格式列表。
    •  isAnimatedTexture:該材質的繪製目標是否是動態紋理。
    •  varients:定義了該材質的變體,變體會繼承本體定義的所有屬性,並支援覆寫、加入或刪去一些屬性。該欄位的前綴會影響該欄位的繼承型別。此時不加入前綴,為替換模式,將替換掉所繼承的材質中所有變體。
    •  +varients:定義了該材質相比於所繼承的材質新增加的變體。此時前綴為+,為增加模式,只有在 states欄位不存在時才會解析。
    •  -varients:變體的刪去功能尚不可用,該欄位此時為佔位符。
    •  varient:相當於 varients
    •  +varient:相當於 +varients
    •  -varient:相當於 -varients
      • :變體列表中的一個元素。
        •  <variant_name>:一個變體,變體列表中每個元素只允許定義一個變體,最終變體的可以用於引用的完整名稱將為<material_name>.<variant_name>