31 lines
883 B
C
31 lines
883 B
C
#include "pxl8_shader.h"
|
|
#include "pxl8_shader_builtins.h"
|
|
|
|
u8 pxl8_shader_unlit(
|
|
pxl8_shader_ctx* ctx,
|
|
const pxl8_shader_bindings* bindings,
|
|
const pxl8_shader_uniforms* uniforms
|
|
) {
|
|
u8 tex_idx = 0;
|
|
if (bindings && bindings->atlas) {
|
|
tex_idx = pxl8_sample_indexed(bindings, ctx->v_uv);
|
|
if (tex_idx == 0) return 0;
|
|
} else {
|
|
if (uniforms && uniforms->dither) {
|
|
tex_idx = pxl8_gfx_dither(ctx->v_color, (u32)ctx->x, (u32)ctx->y);
|
|
} else {
|
|
f32 clamped = pxl8_clamp(ctx->v_color, 0.0f, 255.0f);
|
|
tex_idx = (u8)(clamped);
|
|
}
|
|
}
|
|
|
|
if (uniforms && uniforms->emissive) {
|
|
u32 rgb = 0x00FFFFFF;
|
|
if (bindings && bindings->palette) {
|
|
rgb = bindings->palette[tex_idx] & 0x00FFFFFF;
|
|
}
|
|
pxl8_set_light_tint(ctx, rgb, 1.0f);
|
|
}
|
|
|
|
return tex_idx;
|
|
}
|