Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. shader_type spatial;
  2. render_mode skip_vertex_transform,unshaded;
  3.  
  4. uniform vec4 albedo : hint_color;
  5. uniform float voxelSize;
  6. uniform vec2 screen_size;
  7. uniform vec2 viewport_pos;
  8. uniform vec3 camera_pos;
  9.  
  10. varying vec4 col;
  11.  
  12. varying mat4 ViewProjectionMatrix;
  13. varying vec4 pos_Box;
  14. varying vec3 radius_Box;
  15. varying vec3 invradius_Box;
  16. varying mat3 rotation_Box;
  17.  
  18. varying vec3 min_pos_Box;
  19. varying vec3 max_pos_Box;
  20.  
  21.  
  22. void vertex() {
  23.     float padding = 1.7f;
  24.     mat4 mvp = PROJECTION_MATRIX * MODELVIEW_MATRIX;
  25.     vec4 gl_Position = mvp * vec4(VERTEX, 1.0);
  26.     ViewProjectionMatrix = mvp;
  27. //  quadricProj(VERTEX,voxelSize,mvp,screen_size/2.0,gl_Position,POINT_SIZE);
  28.     POINT_SIZE = screen_size.y * PROJECTION_MATRIX[1][1] * (voxelSize*padding)/gl_Position.w;
  29.    
  30.    
  31.    
  32.  
  33.    
  34.     col = albedo;
  35.     pos_Box = WORLD_MATRIX * vec4(VERTEX,1.0);
  36.    
  37.     VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
  38.     NORMAL = (MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz;
  39.    
  40.    
  41.     radius_Box = vec3(voxelSize);
  42.     invradius_Box = 1.0/radius_Box;
  43.     rotation_Box=mat3(1.0f);
  44.    
  45.     min_pos_Box = pos_Box.xyz - vec3(voxelSize);
  46.     max_pos_Box = pos_Box.xyz + vec3(voxelSize);
  47. //  PROJECTION_MATRIX = mat4(1.0);
  48. }
  49.  
  50.  
  51.  
  52. vec2 intersectAABB(vec3 rayOrigin, vec3 rayDir, vec3 boxMin, vec3 boxMax) {
  53.     vec3 tMin = (boxMin - rayOrigin) / rayDir;
  54.     vec3 tMax = (boxMax - rayOrigin) / rayDir;
  55.     vec3 t1 = min(tMin, tMax);
  56.     vec3 t2 = max(tMin, tMax);
  57.     float tNear = max(max(t1.x, t1.y), t1.z);
  58.     float tFar = min(min(t2.x, t2.y), t2.z);
  59.     return vec2(tNear, tFar);
  60. }
  61. void fragment() {
  62.     vec2 p = 2.0 * vec2(FRAGCOORD.xy)/(screen_size.xy) - vec2(1.0);
  63.     vec3 ro = camera_pos;//ray origin
  64.     vec4 rdh = (CAMERA_MATRIX * INV_PROJECTION_MATRIX )* vec4(p,-1.0,1.0);
  65.     vec3 rd = rdh.xyz/rdh.w - ro;//ray direction
  66.    
  67.  
  68.     vec3 color = col.rgb;
  69.    
  70.     vec3 boxMin = pos_Box.xyz- radius_Box;
  71.     vec3 boxMax = pos_Box.xyz + radius_Box;
  72.  
  73.  
  74.     vec2 result = intersectAABB(ro,rd,boxMin,boxMax);
  75.     bool rayIntersectionTest = result.y > result.x;
  76.     if(rayIntersectionTest == false){
  77.         color = vec3(1.0);
  78.     }
  79. // 
  80.         color = sqrt( color );
  81.  
  82.     ALBEDO =color;
  83.        
  84.    
  85. //  ALBEDO = texture(SCREEN_TEXTURE,POINT_COORD).rgb;
  86.  
  87. }
  88. void light(){
  89.    
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement