PointCloud_GL.shader 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. Shader "Hidden/PointCloud_GL"
  2. {
  3. Properties
  4. {
  5. _PointSize("PointSize", Float) = 5
  6. _HeightTex("Height Texture", 2D) = "white" {}
  7. }
  8. SubShader
  9. {
  10. Pass
  11. {
  12. LOD 200
  13. GLSLPROGRAM
  14. #pragma multi_compile __ HEIGHTMAP_ON
  15. #ifdef VERTEX
  16. out vec4 Color;
  17. uniform sampler2D _HeightTex;
  18. uniform float _PointSize;
  19. float ToneMap(float rawValue)
  20. {
  21. float contrast = 3.8;
  22. float exposure = 0.001;
  23. float a = exposure * pow(rawValue, contrast);
  24. return a / (1.0f + a);
  25. }
  26. void main()
  27. {
  28. gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
  29. gl_PointSize = _PointSize * (1.0 / gl_Position.w);
  30. #ifdef HEIGHTMAP_ON
  31. float index = ToneMap(gl_MultiTexCoord0.x);
  32. Color = texture2D(_HeightTex, vec2(index, 0));
  33. #else
  34. Color = gl_Color;
  35. #endif
  36. }
  37. #endif
  38. #ifdef FRAGMENT
  39. in vec4 Color;
  40. void main()
  41. {
  42. vec2 coord = gl_PointCoord - vec2(0.5);
  43. if (length(coord) > 0.5)
  44. {
  45. discard;
  46. }
  47. gl_FragColor = Color;
  48. }
  49. #endif
  50. ENDGLSL
  51. }
  52. }
  53. Fallback "VertexLit"
  54. }