# Class: Material

材质资源，一般被代理到[XRMaterial](XRMaterial)元素。

## Table of contents

### Constructors

- constructor

### Accessors

- alphaCutOff
- alphaMode
- renderQueue

### Methods

- clearRenderState
- clearRenderStates
- clone
- getFloat
- getMacro
- getMatrix
- getRenderState
- getTexture
- getVector
- initByEffect
- resetTexture
- setFloat
- setMacro
- setMacros
- setMatrix
- setRenderState
- setRenderStates
- setTexture
- setTextureAsset
- setVector

## Constructors

### constructor

• **new Material**(`_scene`)

#### Parameters

| Name | Type |
| :------ | :------ |
| `_scene` | [`Scene`](Scene) |

## Accessors

### alphaCutOff

• `set` **alphaCutOff**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `number` |

#### Returns

`void`

___

### alphaMode

• `set` **alphaMode**(`value`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | ``"OPAQUE"`` \| ``"BLEND"`` \| ``"MASK"`` |

#### Returns

`void`

___

### renderQueue

• `get` **renderQueue**(): `number`

透明物体需要大于`2500`！

#### Returns

`number`

• `set` **renderQueue**(`value`): `void`

透明物体需要大于`2500`！

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `number` |

#### Returns

`void`

## Methods

### clearRenderState

▸ **clearRenderState**(`key`): `boolean`

清除渲染状态。
清除材质的渲染状态，转而从effect中使用默认值。

#### Type parameters

| Name | Type |
| :------ | :------ |
| `TKey` | extends keyof [`IRenderStates`](/miniprogram/dev/reference/xr-frame/api/interfaces/IRenderStates) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `TKey` |

#### Returns

`boolean`

___

### clearRenderStates

▸ **clearRenderStates**(`states`): `boolean`

批量清除渲染状态。
清除材质的渲染状态，转而从effect中使用默认值。

#### Parameters

| Name | Type |
| :------ | :------ |
| `states` | `Object` |

#### Returns

`boolean`

___

### clone

▸ **clone**(): [`Material`](Material)

拷贝自身，生成一份新的材质数据。

#### Returns

[`Material`](Material)

___

### getFloat

▸ **getFloat**(`key`): `number`

获取一个Float

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

`number`

___

### getMacro

▸ **getMacro**(`key`): `boolean`

获取宏。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

`boolean`

___

### getMatrix

▸ **getMatrix**(`key`): [`Matrix3`](Matrix3) \| [`Matrix4`](Matrix4)

获取一个Vector值的拷贝。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

[`Matrix3`](Matrix3) \| [`Matrix4`](Matrix4)

___

### getRenderState

▸ **getRenderState**(`key`): `number` \| `boolean`

获取渲染状态。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

`number` \| `boolean`

___

### getTexture

▸ **getTexture**(`key`): `default`

获取材质中已设置的贴图。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

`default`

___

### getVector

▸ **getVector**(`key`): [`Vector3`](Vector3) \| [`Vector2`](Vector2) \| [`Vector4`](Vector4)

获取一个Vector值的拷贝。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

[`Vector3`](Vector3) \| [`Vector2`](Vector2) \| [`Vector4`](Vector4)

___

### initByEffect

▸ **initByEffect**(`effect`, `defaultUniforms?`): `void`

通过效果初始化材质。

#### Parameters

| Name | Type |
| :------ | :------ |
| `effect` | [`Effect`](Effect) |
| `defaultUniforms?` | `Object` |

#### Returns

`void`

___

### resetTexture

▸ **resetTexture**(`key`): `default`

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |

#### Returns

`default`

___

### setFloat

▸ **setFloat**(`key`, `value`): `boolean`

设置一个Float

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |
| `value` | `number` |

#### Returns

`boolean`

是否设置成功

___

### setMacro

▸ **setMacro**(`key`, `value`): `void`

设置宏。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |
| `value` | `number` \| `boolean` |

#### Returns

`void`

___

### setMacros

▸ **setMacros**(`marcos`): `void`

批量设置宏。

#### Parameters

| Name | Type |
| :------ | :------ |
| `marcos` | `Object` |

#### Returns

`void`

___

### setMatrix

▸ **setMatrix**(`key`, `value`): `boolean`

设置一个Matrix

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |
| `value` | [`Matrix3`](Matrix3) \| [`Matrix4`](Matrix4) |

#### Returns

`boolean`

是否设置成功

___

### setRenderState

▸ **setRenderState**(`key`, `value`): `boolean`

设置渲染状态。
只有标记了`useMaterialRenderStates`的Pass会受到影响

#### Type parameters

| Name | Type |
| :------ | :------ |
| `TKey` | extends keyof [`IRenderStates`](/miniprogram/dev/reference/xr-frame/api/interfaces/IRenderStates) |

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `TKey` |
| `value` | [`IRenderStates`](/miniprogram/dev/reference/xr-frame/api/interfaces/IRenderStates)[`TKey`] |

#### Returns

`boolean`

___

### setRenderStates

▸ **setRenderStates**(`states`): `boolean`

批量设置渲染状态。
只有标记了`useMaterialRenderStates`的Pass会受到影响。

#### Parameters

| Name | Type |
| :------ | :------ |
| `states` | [`IRenderStates`](/miniprogram/dev/reference/xr-frame/api/interfaces/IRenderStates) |

#### Returns

`boolean`

___

### setTexture

▸ **setTexture**(`key`, `value`): `boolean`

设置一张贴图。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |
| `value` | `default` |

#### Returns

`boolean`

是否设置成功。

___

### setTextureAsset

▸ **setTextureAsset**(`key`, `assetId`): `boolean`

设置一张贴图。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |
| `assetId` | `string` |

#### Returns

`boolean`

是否设置成功。

___

### setVector

▸ **setVector**(`key`, `value`): `boolean`

设置一个Vector。

#### Parameters

| Name | Type |
| :------ | :------ |
| `key` | `string` |
| `value` | [`Vector3`](Vector3) \| [`Vector2`](Vector2) \| [`Vector4`](Vector4) |

#### Returns

`boolean`

是否设置成功。
