summaryrefslogtreecommitdiff
path: root/src/shaders/unlit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/shaders/unlit.c')
-rw-r--r--src/shaders/unlit.c38
1 files changed, 26 insertions, 12 deletions
diff --git a/src/shaders/unlit.c b/src/shaders/unlit.c
index fe692f0..e5abdce 100644
--- a/src/shaders/unlit.c
+++ b/src/shaders/unlit.c
@@ -1,28 +1,42 @@
-#include "common_header.h"
+#include "common.h"
-#define light UV3(0)
-#define maintex TEX(0)
+/*uniforms*/
+#define object2world UM4(0)
+#define light UV3(0)
+#define maintex UTEX(0)
-#define vert_color reg_v4_00
+/*varyings*/
+#define rough reg_num_00
static void vert(UniformCollection* uniforms, VertexShaderIn* in, Vec4* clipcoord) {
static Vec4 p; p.xyz = in->vertex->position; p.w = 1;
mat4_applytovec4(uniforms->mvp, &p, clipcoord);
- color_tocolor32(in->vertex->color, vert_color);
+ Vec4 normal = {
+ in->vertex->normal.x,
+ in->vertex->normal.y,
+ in->vertex->normal.z,
+ 1
+ };
+ Vec4 worldnormal; mat4_applytovec4(object2world, &normal, &worldnormal);
+ vec3_normalize(light, light);
+ *reg_num_00 = 1 - vec3_dot(&worldnormal, light);
}
-static bool frag(UniformCollection* uniforms, FragmentShaderIn* in, Color* color) {
+static bool frag(UniformCollection* uniforms, FragmentShaderIn* in, Color32* color) {
vec3_normalize(light, light);
vec3_normalize(&in->normal, &in->normal);
- float strongness = vec3_dot(light, &in->normal);
- vec3_scale(vert_color, 1 - clamp(strongness, 0, 1), vert_color);
- *color = color32_tocolor(vert_color);
- //Color32 c = texture2d(maintex, &in->texcoord);
- //*color = color32_tocolor(&c);
+ //float rough = 1- vec3_dot(&in->normal, light);
+ float roughness = *reg_num_00;
+ Color32 c = tex2d(maintex, in->texcoord);
+ //vec3_scale(&c, roughness, &c);
+ //color32_saturate(&c);
+ *color = c;
return 1;
}
Program ssr_built_in_shader_unlit = {
vert, frag,
- VARYING_V4_00 | VARYING_TEXCOORD
+ VARYING_TEXCOORD |
+ VARYING_NORMAL |
+ VARYING_NUM_00
};