Advertisement
Guest User

Untitled

a guest
Dec 25th, 2012
636
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. // Each #kernel tells which function to compile; you can have many kernels
  3. #pragma kernel CSMain
  4.  
  5. RWTexture2D<float4> Result;
  6.  
  7. RWStructuredBuffer<float3> posBuffer : register(u0);
  8. RWStructuredBuffer<float3> colBuffer : register(u1);
  9. RWStructuredBuffer<float3> tarBuffer : register(u2);
  10.  
  11. float Time;
  12. float4 CoreLoc;
  13.  
  14. float rand_1_05(in float2 uv)
  15. {
  16. float2 noise = (frac(sin(dot(uv ,float2(12.9898,78.233)*2.0)) * 43758.5453));
  17. return abs(noise.x + noise.y) * 0.5;
  18. }
  19.  
  20. float randomSpread(float2 seed)
  21. {
  22. float part1 = rand_1_05(seed);
  23. float part2 = 1;
  24.  
  25. if (part1 < 0.5)
  26. {
  27. part2 = 1;
  28. }
  29. else{
  30. part2 = -1;
  31. }
  32.  
  33. return part2;
  34. }
  35.  
  36.  
  37. float3 ranWithinSphere(float2 seed)
  38. {
  39. float3 temp = float3(0,0,0);
  40.  
  41. temp.x = randomSpread(seed);
  42. temp.y = randomSpread(seed);
  43. temp.z = randomSpread(seed);
  44.  
  45. return temp;
  46. }
  47.  
  48. float distance(float3 point1, float3 point2)
  49. {
  50. float x = (point1.x - point2.x) * (point1.x - point2.x);
  51. float y = (point1.y - point2.y) * (point1.x - point2.y);
  52. float z = (point1.z - point2.z) * (point1.x - point2.z);
  53.  
  54. return sqrt(x + y + z);
  55. }
  56.  
  57. [numthreads(10,1,1)]
  58. void CSMain (uint3 id : SV_DispatchThreadID)
  59. {
  60. float2 seed = float2(id.x * Time, Time);
  61.  
  62.  
  63. colBuffer[id.x].x = cos(Time) * sin(Time);
  64. colBuffer[id.x].y = sin(Time);
  65.  
  66. tarBuffer[id.x].x = CoreLoc.x + ((cos(Time * id.x) * sin(Time))) * 4;
  67. tarBuffer[id.x].y = CoreLoc.y + ((sin(Time * id.x) * cos(Time))) * 7;
  68. tarBuffer[id.x].z = CoreLoc.z + ((cos(Time * id.x) * sin(Time))) * 12;
  69.  
  70.  
  71. // Work your way towards the target
  72. float changeX = tarBuffer[id.x].x - posBuffer[id.x].x;
  73. float changeY = tarBuffer[id.x].y - posBuffer[id.x].y;
  74. float changeZ = tarBuffer[id.x].z - posBuffer[id.x].z;
  75.  
  76.  
  77. posBuffer[id.x].x += (changeX / 40);
  78. posBuffer[id.x].y += (changeY / 40);
  79. posBuffer[id.x].z += (changeZ / 40);
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement