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 | } |
---|