3d.glsl 808 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. @header package main
  2. @header import sg "third-party:sokol/gfx"
  3. @header import m "huginn:core/math"
  4. @vs vs
  5. layout(binding=0) uniform vs_params {
  6. mat4 mvp;
  7. };
  8. in vec4 position;
  9. in vec3 normal0;
  10. in vec4 color0;
  11. out vec4 color;
  12. out vec3 normal;
  13. void main() {
  14. gl_Position = mvp * position;
  15. normal = normal0;
  16. color = color0;
  17. }
  18. @end
  19. @fs fs
  20. in vec4 color;
  21. in vec3 normal;
  22. out vec4 frag_color;
  23. void main() {
  24. // Простое освещение по нормалям
  25. vec3 light_dir = normalize(vec3(0.5, 1.0, 0.3));
  26. vec3 norm = normalize(normal);
  27. float diff = max(dot(norm, light_dir), 0.0);
  28. // Ambient + diffuse
  29. float ambient = 0.3;
  30. float lighting = ambient + diff * 0.7;
  31. frag_color = vec4(color.rgb * lighting, color.a);
  32. }
  33. @end
  34. @program scene vs fs