84 lines
2.4 KiB
C
84 lines
2.4 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Msters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include <dawn/dawn.h>
|
|
|
|
/**
|
|
* Compiles a shader from vertex and fragment shader code.
|
|
* @param shader Shader to compile into.
|
|
* @param vertexShaderSource The raw vertex shader code.
|
|
* @param fragmentShaderSource The raw fragment shader code.
|
|
*/
|
|
void shaderInit(shader_t *shader,
|
|
char *vertexShaderSource, char* fragmentShaderSource
|
|
);
|
|
|
|
/**
|
|
* Cleanup and unload a previously loaded shader.
|
|
* @param shader The shader to unload
|
|
*/
|
|
void shaderDispose(shader_t *shader);
|
|
|
|
/**
|
|
* Attaches the supplied shader as the current shader.
|
|
* @param shader The shader to attach
|
|
*/
|
|
void shaderUse(shader_t *shader);
|
|
|
|
|
|
/**
|
|
* Attaches a camera to the shader.
|
|
* @param shader Shader to attach to.
|
|
* @param camera Camera to attach.
|
|
*/
|
|
void shaderUseCamera(shader_t *shader, camera_t *camera);
|
|
|
|
/**
|
|
* Attaches a texture to the shader.
|
|
* @param shader Shader to attach to.
|
|
* @param texture Texture to attach.
|
|
*/
|
|
void shaderUseTexture(shader_t *shader, texture_t *texture);
|
|
|
|
/**
|
|
* Set's the current translation matrix onto the shader for the next
|
|
* render to use. Rotation order is set to YZX.
|
|
* @param shader Shader to attach to.
|
|
* @param x X coordinate (world space).
|
|
* @param y Y coordinate (world space).
|
|
* @param z Z coordinate (world space).
|
|
* @param pitch Pitch of the object (local space).
|
|
* @param yaw Yaw of the object (local space).
|
|
* @param roll Roll of the object (local space).
|
|
*/
|
|
void shaderUsePosition(shader_t *shader,
|
|
float x, float y, float z,
|
|
float pitch, float yaw, float roll
|
|
);
|
|
|
|
|
|
/**
|
|
* Set's the current translation matrix onto the shader for the next
|
|
* render to use. Also provides scaling controls.
|
|
*
|
|
* @param shader Shader to attach to.
|
|
* @param x X coordinate (world space).
|
|
* @param y Y coordinate (world space).
|
|
* @param z Z coordinate (world space).
|
|
* @param pitch Pitch of the object (local space).
|
|
* @param yaw Yaw of the object (local space).
|
|
* @param roll Roll of the object (local space).
|
|
* @param scaleX X scale of model (1 being 100% scaled).
|
|
* @param scaleY Y scale of model (1 being 100% scaled).
|
|
* @param scaleZ Z scale of model (1 being 100% scaled).
|
|
*/
|
|
void shaderUsePositionAndScale(shader_t *shader,
|
|
float x, float y, float z,
|
|
float pitch, float yaw, float roll,
|
|
float scaleX, float scaleY, float scaleZ
|
|
); |