material_id.shader 453 B

123456789101112131415161718192021222324252627
  1. shader_type spatial;
  2. render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx,unshaded;
  3. uniform int material_id;
  4. const float dv=0.25;
  5. float encode_mid(int mid){
  6. vec2 val=vec2(0.);
  7. return float(mid+1)*dv+dv*0.5;
  8. }
  9. int decode_mid(float mid){
  10. if(mid<dv){
  11. return -1;
  12. }
  13. return int(mid/dv)-1;
  14. }
  15. void vertex() {
  16. COLOR=vec4(0.,0.,0.,1.);
  17. COLOR.r=encode_mid(material_id);
  18. }
  19. void fragment() {
  20. ALBEDO = COLOR.rgb;
  21. }