[gs-longan](../README.md) / Shader

# Class: Shader

## Hierarchy

- `AssetBase`

  ↳ **`Shader`**

## Implements

- `IShaderProperties`

## Table of contents

### Constructors

- [constructor](Shader.md#constructor)

### Properties

- [fina](Shader.md#fina)
- [init](Shader.md#init)
- [typeName](Shader.md#typename)
- [includes](Shader.md#includes)

### Accessors

- [defines](Shader.md#defines)
- [fragment](Shader.md#fragment)
- [fragmentPostProcessing](Shader.md#fragmentpostprocessing)
- [fragmentPreProcessing](Shader.md#fragmentpreprocessing)
- [name](Shader.md#name)
- [program](Shader.md#program)
- [properties](Shader.md#properties)
- [states](Shader.md#states)
- [vertex](Shader.md#vertex)
- [vertexPostProcessing](Shader.md#vertexpostprocessing)
- [vertexPreProcessing](Shader.md#vertexpreprocessing)
- [viewer](Shader.md#viewer)

### Methods

- [\_executeFina](Shader.md#_executefina)
- [\_executeInit](Shader.md#_executeinit)
- [createGeometry](Shader.md#creategeometry)
- [createShaderProgram](Shader.md#createshaderprogram)
- [deserialize](Shader.md#deserialize)
- [destoryGeometry](Shader.md#destorygeometry)
- [destroyProgram](Shader.md#destroyprogram)
- [drawGeometry](Shader.md#drawgeometry)
- [serialize](Shader.md#serialize)
- [setDefaultProperties](Shader.md#setdefaultproperties)
- [setProgram](Shader.md#setprogram)
- [setProperties](Shader.md#setproperties)
- [setStates](Shader.md#setstates)
- [setVariableFloat](Shader.md#setvariablefloat)
- [setVariableMat4](Shader.md#setvariablemat4)
- [setVariableVec2](Shader.md#setvariablevec2)
- [setVariableVec3](Shader.md#setvariablevec3)
- [setVariableVec4](Shader.md#setvariablevec4)
- [unsetStates](Shader.md#unsetstates)
- [GetIncludeSource](Shader.md#getincludesource)
- [from](Shader.md#from)
- [initIncludes](Shader.md#initincludes)

## Constructors

### constructor

• **new Shader**(): [`Shader`](Shader.md)

#### Returns

[`Shader`](Shader.md)

#### Overrides

AssetBase.constructor

## Properties

### fina

• **fina**: [`List`](List.md)\<(`viewer`: [`Viewer`](Viewer.md), `args`: [`EventArgs`](EventArgs.md)) => `void`\>

#### Inherited from

AssetBase.fina

___

### init

• **init**: [`List`](List.md)\<(`viewer`: [`Viewer`](Viewer.md), `args`: [`EventArgs`](EventArgs.md)) => `void`\>

#### Inherited from

AssetBase.init

___

### typeName

• **typeName**: `string` = `"Shader"`

#### Overrides

AssetBase.typeName

___

### includes

▪ `Static` **includes**: `Record`\<`string`, `string`\>

## Accessors

### defines

• `get` **defines**(): `DefineCollection`

#### Returns

`DefineCollection`

___

### fragment

• `get` **fragment**(): `string`

#### Returns

`string`

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

#### Parameters

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

#### Returns

`void`

___

### fragmentPostProcessing

• `get` **fragmentPostProcessing**(): `ProcessingCollection`

#### Returns

`ProcessingCollection`

___

### fragmentPreProcessing

• `get` **fragmentPreProcessing**(): `ProcessingCollection`

#### Returns

`ProcessingCollection`

___

### name

• `get` **name**(): `string`

#### Returns

`string`

#### Overrides

AssetBase.name

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

#### Parameters

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

#### Returns

`void`

#### Overrides

AssetBase.name

___

### program

• `get` **program**(): [`ShaderProgram`](../interfaces/ShaderProgram.md)

#### Returns

[`ShaderProgram`](../interfaces/ShaderProgram.md)

___

### properties

• `get` **properties**(): `PropertyCollection`

#### Returns

`PropertyCollection`

#### Implementation of

IShaderProperties.properties

___

### states

• `get` **states**(): `StateCollection`

#### Returns

`StateCollection`

___

### vertex

• `get` **vertex**(): `string`

#### Returns

`string`

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

#### Parameters

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

#### Returns

`void`

___

### vertexPostProcessing

• `get` **vertexPostProcessing**(): `ProcessingCollection`

#### Returns

`ProcessingCollection`

___

### vertexPreProcessing

• `get` **vertexPreProcessing**(): `ProcessingCollection`

#### Returns

`ProcessingCollection`

___

### viewer

• `get` **viewer**(): [`Viewer`](Viewer.md)

#### Returns

[`Viewer`](Viewer.md)

#### Implementation of

IShaderProperties.viewer

#### Inherited from

AssetBase.viewer

## Methods

### \_executeFina

▸ **_executeFina**(`viewer`, `args`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `viewer` | [`Viewer`](Viewer.md) |
| `args` | [`EventArgs`](EventArgs.md) |

#### Returns

`void`

#### Inherited from

AssetBase.\_executeFina

___

### \_executeInit

▸ **_executeInit**(`viewer`, `args`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `viewer` | [`Viewer`](Viewer.md) |
| `args` | [`EventArgs`](EventArgs.md) |

#### Returns

`void`

#### Inherited from

AssetBase.\_executeInit

___

### createGeometry

▸ **createGeometry**(`mesh`): [`Geometry`](../interfaces/Interface.Geometry.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `mesh` | [`Mesh`](../interfaces/Mesh.md) |

#### Returns

[`Geometry`](../interfaces/Interface.Geometry.md)

___

### createShaderProgram

▸ **createShaderProgram**(`feedbackVars?`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `feedbackVars?` | `string`[] |

#### Returns

`void`

___

### deserialize

▸ **deserialize**(`obj`, `pm?`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `obj` | `any` |
| `pm?` | [`IPersistenceManager`](../interfaces/Interface.IPersistenceManager.md) |

#### Returns

`void`

#### Overrides

AssetBase.deserialize

___

### destoryGeometry

▸ **destoryGeometry**(`geometry`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `geometry` | [`Geometry`](../interfaces/Interface.Geometry.md) |

#### Returns

`void`

___

### destroyProgram

▸ **destroyProgram**(): `void`

#### Returns

`void`

___

### drawGeometry

▸ **drawGeometry**(`geometry`): [`Shader`](Shader.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `geometry` | [`Geometry`](../interfaces/Interface.Geometry.md) |

#### Returns

[`Shader`](Shader.md)

___

### serialize

▸ **serialize**(`pm?`): `any`

#### Parameters

| Name | Type |
| :------ | :------ |
| `pm?` | [`IPersistenceManager`](../interfaces/Interface.IPersistenceManager.md) |

#### Returns

`any`

#### Overrides

AssetBase.serialize

___

### setDefaultProperties

▸ **setDefaultProperties**(): `void`

#### Returns

`void`

___

### setProgram

▸ **setProgram**(): [`Shader`](Shader.md)

#### Returns

[`Shader`](Shader.md)

___

### setProperties

▸ **setProperties**(`props`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `props` | `PropertyCollection` |

#### Returns

`void`

___

### setStates

▸ **setStates**(): `void`

#### Returns

`void`

___

### setVariableFloat

▸ **setVariableFloat**(`name`, `value`): [`Shader`](Shader.md)

#### Parameters

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

#### Returns

[`Shader`](Shader.md)

___

### setVariableMat4

▸ **setVariableMat4**(`name`, `value`): [`Shader`](Shader.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `value` | `mat4` |

#### Returns

[`Shader`](Shader.md)

___

### setVariableVec2

▸ **setVariableVec2**(`name`, `value`): [`Shader`](Shader.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `value` | `vec2` |

#### Returns

[`Shader`](Shader.md)

___

### setVariableVec3

▸ **setVariableVec3**(`name`, `value`): [`Shader`](Shader.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `value` | `vec3` |

#### Returns

[`Shader`](Shader.md)

___

### setVariableVec4

▸ **setVariableVec4**(`name`, `value`): [`Shader`](Shader.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |
| `value` | `vec4` |

#### Returns

[`Shader`](Shader.md)

___

### unsetStates

▸ **unsetStates**(): `void`

#### Returns

`void`

___

### GetIncludeSource

▸ **GetIncludeSource**(`name`): `__module`

#### Parameters

| Name | Type |
| :------ | :------ |
| `name` | `string` |

#### Returns

`__module`

___

### from

▸ **from**(`obj`): [`Shader`](Shader.md)

#### Parameters

| Name | Type |
| :------ | :------ |
| `obj` | `any` |

#### Returns

[`Shader`](Shader.md)

___

### initIncludes

▸ **initIncludes**(): `void`

#### Returns

`void`
