1 | /* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ |
---|

2 | /* |
---|

3 | * Copyright (c) 2004-2013 HUBzero Foundation, LLC |
---|

4 | * |
---|

5 | * Authors: |
---|

6 | * Wei Qiao <qiaow@purdue.edu> |
---|

7 | */ |
---|

8 | |
---|

9 | float4 main (float2 texCoord : TEXCOORD0, |
---|

10 | uniform samplerRECT posTexture : register(s0), |
---|

11 | uniform samplerRECT initTexture : register(s1), |
---|

12 | uniform sampler3D vfield, |
---|

13 | uniform float3 scale, |
---|

14 | uniform float maxScale, |
---|

15 | uniform float useInitPos, |
---|

16 | uniform float timeStep, |
---|

17 | uniform float currentTime) : COLOR |
---|

18 | { |
---|

19 | if (maxScale > 100) maxScale = 100; |
---|

20 | |
---|

21 | float3 oldPosition = f3texRECT(posTexture, texCoord); |
---|

22 | float3 velocity = tex3D(vfield, oldPosition).yzw - float3(0.5, 0.5, 0.5); |
---|

23 | velocity = velocity * (2 * maxScale); |
---|

24 | velocity = velocity * scale; |
---|

25 | |
---|

26 | float3 position = oldPosition + velocity * timeStep * 0.01; |
---|

27 | //float3 position = oldPosition; |
---|

28 | |
---|

29 | //if (useInitPos) { |
---|

30 | if ((position.x < 0) || (position.x > 1) || |
---|

31 | (position.y < 0) || (position.y > 1) || |
---|

32 | (position.z < 0) || (position.z > 1)) { |
---|

33 | position = f3texRECT(initTexture, texCoord); |
---|

34 | } |
---|

35 | //} |
---|

36 | |
---|

37 | return float4(position, 1); |
---|

38 | } |
---|

39 | |
---|

40 | float4 initParticlePosMain(float3 initPos : TEXCOORD0, |
---|

41 | float2 texCoord : TEXCOORD1, |
---|

42 | float timeStep : TEXCOORD2, |
---|

43 | uniform sampler3D vfield) : COLOR |
---|

44 | { |
---|

45 | float3 oldPosition = initPos; |
---|

46 | //float3 velocity = tex3D(vfield, oldPosition).yzw * 2 - float3(1, 1, 1); |
---|

47 | //float3 position = oldPosition + timeStep * velocity; |
---|

48 | //return float4(position, 1); |
---|

49 | return float4(initPos, 1); |
---|

50 | } |
---|

51 | |
---|

52 | float4 mainlines(float2 texCoord : TEXCOORD0, |
---|

53 | uniform samplerRECT posTexture : register(s0), |
---|

54 | uniform sampler3D vfield, |
---|

55 | uniform float2 offset, |
---|

56 | uniform float timeStep) : COLOR |
---|

57 | { |
---|

58 | float3 oldPosition = f3texRECT(posTexture, texCoord); |
---|

59 | float3 velocity = tex3D(vfield, oldPosition).yzw * 2 - float3(1, 1, 1); |
---|

60 | |
---|

61 | float3 position = oldPosition + velocity * timeStep; |
---|

62 | |
---|

63 | return float4(position, 1); |
---|

64 | } |
---|