# engineSetMaterialShader (Client)

> Changes a material's shader, keeping the values it already has.

- **Platform**: MY Multiplayer (MYMP)
- **Kind**: Lua Function
- **Side**: Client
- **Category**: Materials and shaders
- **URL**: https://wiki.mymp.gg/en/engineSetMaterialShader

## Syntax

```lua
bool engineSetMaterialShader(material material, string|shader|false shader)
```

## Parameters

| Name | Type | Description |
| --- | --- | --- |
| `material` | `material` | The material. |
| `shader` | `string\|shader\|false` | A shader's name or a `shader` element. `false` drops the material's own shader, so it uses its base's again. |

## Returns

`true` when the shader was changed.

## Example

```lua
local material = engineCreateMaterial()
local shader = engineCreateShader("shaders/hologram.shader")
engineSetMaterialShader(material, shader)
```

### Note

A name that is not a shader is an error; presets are not taken here.

## See also

- [engineGetMaterialShader (Client)](https://wiki.mymp.gg/en/engineGetMaterialShader.md): Gives the shader a material uses.
- [engineCreateShader (Client)](https://wiki.mymp.gg/en/engineCreateShader.md): Creates a shader from a .shader file or from its source text. The shader compiles in the background.
- [engineSetMaterialValue (Client)](https://wiki.mymp.gg/en/engineSetMaterialValue.md): Sets a material's value: a shader parameter, a static switch or the render target of a TARGET_n output.
