Jump to content
The Dark Mod Forums

Proper & realistic moving water:


Bikerdude

Recommended Posts

  • Replies 77
  • Created
  • Last Reply

Top Posters In This Topic

I don't know. The material is:

 

 

animated_water

{
{
	if ( (time * 50) % 49 == 0 )
	blend add rgb 0.2
	map	textures/water_blend_add/water0001.tga
}
{
	if ( (time * 50) % 49 == 1 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0002.tga
}
{
	if ( (time * 50) % 49 == 2 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0003.tga
}
{
	if ( (time * 50) % 49 == 3 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0004.tga
}
{
	if ( (time * 50) % 49 == 4 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0005.tga
}
{
	if ( (time * 50) % 49 == 5 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0006.tga
}
{
	if ( (time * 50) % 49 == 6 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0007.tga
}
{
	if ( (time * 50) % 49 == 7 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0008.tga
}
{
	if ( (time * 50) % 49 == 8 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0009.tga
}
{
	if ( (time * 50) % 49 == 9 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0010.tga
}
{
	if ( (time * 50) % 49 == 10 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0011.tga
}
{
	if ( (time * 50) % 49 == 11 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0012.tga
}
{
	if ( (time * 50) % 49 == 12 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0013.tga
}
{
	if ( (time * 50) % 49 == 13 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0014.tga
}
{
	if ( (time * 50) % 49 == 14 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0015.tga
}
{
	if ( (time * 50) % 49 == 15 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0016.tga
}
{
	if ( (time * 50) % 49 == 16 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0017.tga
}
{
	if ( (time * 50) % 49 == 17 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0018.tga
}
{
	if ( (time * 50) % 49 == 18 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0019.tga
}
{
	if ( (time * 50) % 49 == 19 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0020.tga
}
{
	if ( (time * 50) % 49 == 20 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0021.tga
}
{
	if ( (time * 50) % 49 == 21 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0022.tga
}
{
	if ( (time * 50) % 49 == 22 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0023.tga
}
{
	if ( (time * 50) % 49 == 23 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0024.tga
}
{
	if ( (time * 50) % 49 == 24 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0025.tga
}
	{
	if ( (time * 50) % 49 == 25 )
	blend add rgb 0.2
	map	textures/water_blend_add/water0026.tga
}
{
	if ( (time * 50) % 49 == 26 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0027.tga
}
{
	if ( (time * 50) % 49 == 27 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0028.tga
}
{
	if ( (time * 50) % 49 == 28 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0029.tga
}
{
	if ( (time * 50) % 49 == 29 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0030.tga
}
{
	if ( (time * 50) % 49 == 30 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0031.tga
}
{
	if ( (time * 50) % 49 == 31 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0032.tga
}
{
	if ( (time * 50) % 49 == 32 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0033.tga
}
{
	if ( (time * 50) % 49 == 33 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0034.tga
}
{
	if ( (time * 50) % 49 == 34 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0035.tga
}
{
	if ( (time * 50) % 49 == 35 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0036.tga
}
{
	if ( (time * 50) % 49 == 36 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0037.tga
}
{
	if ( (time * 50) % 49 == 37 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0038.tga
}
{
	if ( (time * 50) % 49 == 38 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0039.tga
}
{
	if ( (time * 50) % 49 == 39 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0040.tga
}
{
	if ( (time * 50) % 49 == 40 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0041.tga
}
{
	if ( (time * 50) % 49 == 41 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0042.tga
}
{
	if ( (time * 50) % 49 == 42 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0043.tga
}
{
	if ( (time * 50) % 49 == 43 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0044.tga
}
{
	if ( (time * 50) % 49 == 44 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0045.tga
}
{
	if ( (time * 50) % 49 == 45 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0046.tga
}
{
	if ( (time * 50) % 49 == 46 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0047.tga
}
{
	if ( (time * 50) % 49 == 47 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0048.tga
}
{
	if ( (time * 50) % 49 == 48 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0049.tga
}
{
	if ( (time * 50) % 49 == 49 )
	blend add rgb 0.2	
	map	textures/water_blend_add/water0050.tga
}
}

 

 

Here are the frames. 50 TGAs so you have to compress them to dds: http://www.speedysha...er-blend-add.7z

It's only a model...

Link to comment
Share on other sites

You can set alpha parm on mirror render map.

Ok, I added alpha to reflection. Now it's transparent:

 

 

Material:

 

 

reflective_water
{
    qer_editorimage textures/water_source/arc_reflective_ed

       noshadows
    noimpact
    nonsolid
    sort Underwater
{
    blend   blend
    mirrorRenderMap 128	 128
       alpha 0.3

    translate	   0.5, 0.5
    scale		   0.5, 0.5
   }
}

 

 

It's only a model...

Link to comment
Share on other sites

Looks like you just use the above for the surface texture on the top part of the water brush.

 

Then you give the editor property for the whole brush "underwater_gui" then

choose one of these variants:

 

guis/underwater/underwater_green_midmurk.gui

guis/underwater/underwater_green_thickmurk.gui

guis/underwater/underwater_green_thinmurk.gui

 

guis/underwater/underwater_blue_midmurk.gui

guis/underwater/underwater_blue_thickmurk.gui

guis/underwater/underwater_blue_thinmurk.gui

 

guis/underwater/underwater_bluegrey_midmurk.gui

guis/underwater/underwater_bluegrey_thickmurk.gui

guis/underwater/underwater_bluegrey_thinmurk.gui

 

guis/underwater/underwater_greengrey_midmurk.gui

guis/underwater/underwater_greengrey_thickmurk.gui

guis/underwater/underwater_greengrey_thinmurk.gui

 

 

Now with the water entity still selected:

  • Choose Top view in Dark Radiant's orthoview
  • Create a simple patch from the patch menu.
  • Move this up flush with the surface of the water.
  • Give it the texture that matches the gui you chose above. For example, if you chose guis/underwater/underwater_bluegrey_thinmurk.gui from the above then give the overlay the texture: textures/water_source/bluegrey_plain_flat_thinmurk

Using the above method you should find the surface opacity and colour matches how it looks when the players goes underwater.

 

 

So based on a cursory look, these have always been separate tasks but perhaps the water prefabs have always made this easy because they were

already pre-made?

 

http://wiki.thedarkmod.com/index.php?title=Water

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

I actually think (because of your test map being dark) that the first render with the very reflective top surface is more realistic. When its dark outside, that's how water looks; really dark and reflective.

 

If its brighter outside/inside then it would be more like the second vid Arcturus posted.

 

Either way, freaking fantastic water! Really cool.

Link to comment
Share on other sites

I would say the jury is out on which one is more realistic until a dark fog texture has been applied under the water which will simulate water sediment. Point taken, about ambient light levels

and the perceived reflections however. That's the cool thing about the alpha parm, you can tweak it to your own artistic requirements.

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

If you can, please don't use this website or thier self-extractors as they are infested with malware that your average user may not spot. I had click decline 3x times and then it STILL installed a bloody program (despite me trying to avoid that happening) to download the file I actually wanted! Oh and said "tiny_downloader" wanted to run at startup - charming...

Link to comment
Share on other sites

Sorry for that. Getting back to the 50 frames version of water. I added scrolling.

 

 

You just need to add

 

translate time * 0.3 , 0

 

for each frame. I also changed blend mode to blend blend with alpha set to 0.3. I used desaturated version of the texture: https://www.dropbox...._desaturated.7z

 

The material is now like this:

 

 

animated_water

{
noshadows
noimpact
nonsolid
{
	if ( (time * 50) % 49 == 0 )
	blend blend
	alpha 0.3
	map	textures/water/water0001.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 1 )
	blend blend
	alpha 0.3
	map	textures/water/water0002.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 2 )
	blend blend
	alpha 0.3
	map	textures/water/water0003.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 3 )
	blend blend
	alpha 0.3
	map	textures/water/water0004.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 4 )
	blend blend
	alpha 0.3
	map	textures/water/water0005.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 5 )
	blend blend
	alpha 0.3
	map	textures/water/water0006.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 6 )
	blend blend
	alpha 0.3
	map	textures/water/water0007.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 7 )
	blend blend
	alpha 0.3
	map	textures/water/water0008.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 8 )
	blend blend
	alpha 0.3
	map	textures/water/water0009.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 9 )
	blend blend
	alpha 0.3
	map	textures/water/water0010.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 10 )
	blend blend
	alpha 0.3
	map	textures/water/water0011.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 11 )
	blend blend
	alpha 0.3
	map	textures/water/water0012.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 12 )
	blend blend
	alpha 0.3
	map	textures/water/water0013.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 13 )
	blend blend
	alpha 0.3
	map	textures/water/water0014.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 14 )
	blend blend
	alpha 0.3
	map	textures/water/water0015.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 15 )
	blend blend
	alpha 0.3
	map	textures/water/water0016.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 16 )
	blend blend
	alpha 0.3
	map	textures/water/water0017.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 17 )
	blend blend
	alpha 0.3
	map	textures/water/water0018.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 18 )
	blend blend
	alpha 0.3
	map	textures/water/water0019.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 19 )
	blend blend
	alpha 0.3
	map	textures/water/water0020.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 20 )
	blend blend
	alpha 0.3
	map	textures/water/water0021.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 21 )
	blend blend	alpha 0.3
	map	textures/water/water0022.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 22 )
	blend blend	alpha 0.3
	map	textures/water/water0023.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 23 )
	blend blend	alpha 0.3
	map	textures/water/water0024.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 24 )
	blend blend	alpha 0.3
	map	textures/water/water0025.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 25 )
	blend blend alpha 0.3
	map	textures/water/water0026.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 26 )
	blend blend	alpha 0.3
	map	textures/water/water0027.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 27 )
	blend blend	alpha 0.3
	map	textures/water/water0028.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 28 )
	blend blend	alpha 0.3
	map	textures/water/water0029.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 29 )
	blend blend	alpha 0.3
	map	textures/water/water0030.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 30 )
	blend blend	alpha 0.3
	map	textures/water/water0031.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 31 )
	blend blend	alpha 0.3
	map	textures/water/water0032.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 32 )
	blend blend	alpha 0.3
	map	textures/water/water0033.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 33 )
	blend blend	alpha 0.3
	map	textures/water/water0034.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 34 )
	blend blend	alpha 0.3
	map	textures/water/water0035.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 35 )
	blend blend	alpha 0.3
	map	textures/water/water0036.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 36 )
	blend blend	alpha 0.3
	map	textures/water/water0037.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 37 )
	blend blend	alpha 0.3
	map	textures/water/water0038.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 38 )
	blend blend	alpha 0.3
	map	textures/water/water0039.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 39 )
	blend blend	alpha 0.3
	map	textures/water/water0040.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 40 )
	blend blend	alpha 0.3
	map	textures/water/water0041.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 41 )
	blend blend	alpha 0.3
	map	textures/water/water0042.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 42 )
	blend blend	alpha 0.3
	map	textures/water/water0043.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 43 )
	blend blend	alpha 0.3
	map	textures/water/water0044.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 44 )
	blend blend	alpha 0.3
	map	textures/water/water0045.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 45 )
	blend blend	alpha 0.3
	map	textures/water/water0046.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 46 )
	blend blend	alpha 0.3
	map	textures/water/water0047.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 47 )
	blend blend	alpha 0.3
	map	textures/water/water0048.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 48 )
	blend blend	alpha 0.3
	map	textures/water/water0049.tga
	translate time * 0.3 , 0
}
{
	if ( (time * 50) % 49 == 49 )
	blend blend	alpha 0.3
	map	textures/water/water0050.tga
	translate time * 0.3 , 0
}
}

 

It's only a model...

Link to comment
Share on other sites

I made a 50 frames animated normalmap similar to the one posted by Rich_is_bored. It's made in Blender using the same ocean modifier so the pattern is the same as in the video above. The normalmap is also scrolled. The effect is similar to a single scrolling normalmap but it's slightly better, especially for still water.

 

 

Normalmap frames: https://www.dropbox.com/s/xq4rey4bfminx4k/water_normalmap.7z

 

 

animated_water_refraction

{
   noshadows
   noimpact
   nonsolid
   {
       if ( (time * 50) % 49 == 0 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0001.tga
   }
   {
       if ( (time * 50) % 49 == 1 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0002.tga
   }
   {
       if ( (time * 50) % 49 == 2 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0003.tga
   }
   {
       if ( (time * 50) % 49 == 3 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0004.tga
   }
   {
       if ( (time * 50) % 49 == 4 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0005.tga
   }
   {
       if ( (time * 50) % 49 == 5 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0006.tga
   }
   {
       if ( (time * 50) % 49 == 6 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0007.tga
   }
   {
       if ( (time * 50) % 49 == 7 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0008.tga
   }
   {
       if ( (time * 50) % 49 == 8 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0009.tga
   }
   {
       if ( (time * 50) % 49 == 9 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0010.tga
   }
   {
       if ( (time * 50) % 49 == 10 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0011.tga
   }
   {
       if ( (time * 50) % 49 == 11 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0012.tga
   }
   {
       if ( (time * 50) % 49 == 12 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0013.tga
   }
   {
       if ( (time * 50) % 49 == 13 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0014.tga
   }
   {
       if ( (time * 50) % 49 == 14 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0015.tga
   }
   {
       if ( (time * 50) % 49 == 15 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0016.tga
   }
   {
       if ( (time * 50) % 49 == 16 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0017.tga
   }
   {
       if ( (time * 50) % 49 == 17 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0018.tga
   }
   {
       if ( (time * 50) % 49 == 18 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0019.tga
   }
   {
       if ( (time * 50) % 49 == 19 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0020.tga
   }
   {
       if ( (time * 50) % 49 == 20 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0021.tga
   }
   {
       if ( (time * 50) % 49 == 21 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0022.tga
   }
   {
       if ( (time * 50) % 49 == 22 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0023.tga
   }
   {
       if ( (time * 50) % 49 == 23 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0024.tga
   }
   {
       if ( (time * 50) % 49 == 24 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0025.tga
   }
       {
       if ( (time * 50) % 49 == 25 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0026.tga
   }
   {
       if ( (time * 50) % 49 == 26 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0027.tga
   }
   {
       if ( (time * 50) % 49 == 27 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0028.tga
   }
   {
       if ( (time * 50) % 49 == 28 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0029.tga
   }
   {
       if ( (time * 50) % 49 == 29 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0030.tga
   }
   {
       if ( (time * 50) % 49 == 30 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0031.tga
   }
   {
       if ( (time * 50) % 49 == 31 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0032.tga
   }
   {
       if ( (time * 50) % 49 == 32 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0033.tga
   }
   {
       if ( (time * 50) % 49 == 33 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0034.tga
   }
   {
       if ( (time * 50) % 49 == 34 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0035.tga
   }
   {
       if ( (time * 50) % 49 == 35 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0036.tga
   }
   {
       if ( (time * 50) % 49 == 36 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0037.tga
   }
   {
       if ( (time * 50) % 49 == 37 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0038.tga
   }
   {
       if ( (time * 50) % 49 == 38 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0039.tga
   }
   {
       if ( (time * 50) % 49 == 39 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0040.tga
   }
   {
       if ( (time * 50) % 49 == 40 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0041.tga
   }
   {
       if ( (time * 50) % 49 == 41 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0042.tga
   }
   {
       if ( (time * 50) % 49 == 42 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0043.tga
   }
   {
       if ( (time * 50) % 49 == 43 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0044.tga
   }
   {
       if ( (time * 50) % 49 == 44 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0045.tga
   }
   {
       if ( (time * 50) % 49 == 45 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0046.tga
   }
   {
       if ( (time * 50) % 49 == 46 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0047.tga
   }
   {
       if ( (time * 50) % 49 == 47 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0048.tga
   }
   {
       if ( (time * 50) % 49 == 48 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0049.tga
   }
   {
       if ( (time * 50) % 49 == 49 )
       program        heatHaze.vfp
       vertexParm    0    time * 0.3 , time * 0 // scroll
       vertexParm    1    3 //magnitude
       fragmentMap    0     _currentRender
       fragmentMap    1    textures/water_normalmap/water0050.tga
   }
}

 

 

It's only a model...

Link to comment
Share on other sites

I think part of the appeal of the Thief water example originally posted is that the animation was designed to look like water

flowing in a stream. There are collision events (etc) on the edges. I don't know if Blender has any premade river water simulations

but that would get you closer to the intended effect. That said, I'll say once more how great these look already and I can only

anticipate what they will look like with a little water fog below them. :)

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

On 2/9/2014 at 10:54 PM, 161803398874989 said:

That's some funky code, Arcturus. Might be a better idea to calculate (time * 50)%49 +1, then convert that to a string and concatenate with "textures/water/normalmap/water00" and ".tga"

I can't write my own code, I can only search for existing ones and glue them together and hope they will work. If you can give me optimised code I'll be happy to test it.

On 2/10/2014 at 12:46 AM, nbohr1more said:

I think part of the appeal of the Thief water example originally posted is that the animation was designed to look like water

flowing in a stream. There are collision events (etc) on the edges.

I created the frames with ocean modifier in Blender. It uses an animated displacement. There are some options that you can play with. You could also add another displacement for selected parts of the image. However, people will want to use the texture on different sizes of water pools both streams and still water.

 

Anyway, I added animated bumpmap stage (using the same 50 frame normalmap) and a specularmap. There has to be a diffusemap present, otherwise specular won't be visible. In this example I put _black but you can add any texture which would affect color of the surface.

 

 

 

Material:

 

 

 

animated_water_refraction

{
noshadows
noimpact
nonsolid

	diffusemap	_black
{	
	blend	specularmap
	map _white
	rgb 0.1
}
{
	if ( (time * 50) % 49 == 0 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0001.tga
}
{
	if ( (time * 50) % 49 == 1 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0002.tga
}
{
	if ( (time * 50) % 49 == 2 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0003.tga
}
{
	if ( (time * 50) % 49 == 3 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0004.tga
}
{
	if ( (time * 50) % 49 == 4 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0005.tga
}
{
	if ( (time * 50) % 49 == 5 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0006.tga
}
{
	if ( (time * 50) % 49 == 6 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0007.tga
}
{
	if ( (time * 50) % 49 == 7 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0008.tga
}
{
	if ( (time * 50) % 49 == 8 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0009.tga
}
{
	if ( (time * 50) % 49 == 9 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0010.tga
}
{
	if ( (time * 50) % 49 == 10 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0011.tga
}
{
	if ( (time * 50) % 49 == 11 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0012.tga
}
{
	if ( (time * 50) % 49 == 12 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0013.tga
}
{
	if ( (time * 50) % 49 == 13 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0014.tga
}
{
	if ( (time * 50) % 49 == 14 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0015.tga
}
{
	if ( (time * 50) % 49 == 15 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0016.tga
}
{
	if ( (time * 50) % 49 == 16 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0017.tga
}
{
	if ( (time * 50) % 49 == 17 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0018.tga
}
{
	if ( (time * 50) % 49 == 18 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0019.tga
}
{
	if ( (time * 50) % 49 == 19 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0020.tga
}
{
	if ( (time * 50) % 49 == 20 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0021.tga
}
{
	if ( (time * 50) % 49 == 21 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0022.tga
}
{
	if ( (time * 50) % 49 == 22 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0023.tga
}
{
	if ( (time * 50) % 49 == 23 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0024.tga
}
{
	if ( (time * 50) % 49 == 24 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0025.tga
}
{
	if ( (time * 50) % 49 == 25 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0026.tga
}
{
	if ( (time * 50) % 49 == 26 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0027.tga
}
{
	if ( (time * 50) % 49 == 27 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0028.tga
}
{
	if ( (time * 50) % 49 == 28 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0029.tga
}
{
	if ( (time * 50) % 49 == 29 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0030.tga
}
{
	if ( (time * 50) % 49 == 30 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0031.tga
}
{
	if ( (time * 50) % 49 == 31 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0032.tga
}
{
	if ( (time * 50) % 49 == 32 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0033.tga
}
{
	if ( (time * 50) % 49 == 33 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0034.tga
}
{
	if ( (time * 50) % 49 == 34 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0035.tga
}
{
	if ( (time * 50) % 49 == 35 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0036.tga
}
{
	if ( (time * 50) % 49 == 36 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0037.tga
}
{
	if ( (time * 50) % 49 == 37 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0038.tga
}
{
	if ( (time * 50) % 49 == 38 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0039.tga
}
{
	if ( (time * 50) % 49 == 39 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0040.tga
}
{
	if ( (time * 50) % 49 == 40 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0041.tga
}
{
	if ( (time * 50) % 49 == 41 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0042.tga
}
{
	if ( (time * 50) % 49 == 42 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0043.tga
}
{
	if ( (time * 50) % 49 == 43 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0044.tga
}
{
	if ( (time * 50) % 49 == 44 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0045.tga
}
{
	if ( (time * 50) % 49 == 45 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0046.tga
}
{
	if ( (time * 50) % 49 == 46 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0047.tga
}
{
	if ( (time * 50) % 49 == 47 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0048.tga
}
{
	if ( (time * 50) % 49 == 48 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0049.tga
}
{
	if ( (time * 50) % 49 == 49 )
	translate time * 0.3 , 0
	blend bumpmap
	map	textures/water_normalmap/water0050.tga
}


{
	if ( (time * 50) % 49 == 0 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0001.tga
}
{
	if ( (time * 50) % 49 == 1 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0002.tga
}
{
	if ( (time * 50) % 49 == 2 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0003.tga
}
{
	if ( (time * 50) % 49 == 3 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0004.tga
}
{
	if ( (time * 50) % 49 == 4 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0005.tga
}
{
	if ( (time * 50) % 49 == 5 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0006.tga
}
{
	if ( (time * 50) % 49 == 6 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0007.tga
}
{
	if ( (time * 50) % 49 == 7 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0008.tga
}
{
	if ( (time * 50) % 49 == 8 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0009.tga
}
{
	if ( (time * 50) % 49 == 9 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0010.tga
}
{
	if ( (time * 50) % 49 == 10 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0011.tga
}
{
	if ( (time * 50) % 49 == 11 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0012.tga
}
{
	if ( (time * 50) % 49 == 12 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0013.tga
}
{
	if ( (time * 50) % 49 == 13 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0014.tga
}
{
	if ( (time * 50) % 49 == 14 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0015.tga
}
{
	if ( (time * 50) % 49 == 15 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0016.tga
}
{
	if ( (time * 50) % 49 == 16 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0017.tga
}
{
	if ( (time * 50) % 49 == 17 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0018.tga
}
{
	if ( (time * 50) % 49 == 18 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0019.tga
}
{
	if ( (time * 50) % 49 == 19 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0020.tga
}
{
	if ( (time * 50) % 49 == 20 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0021.tga
}
{
	if ( (time * 50) % 49 == 21 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0022.tga
}
{
	if ( (time * 50) % 49 == 22 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0023.tga
}
{
	if ( (time * 50) % 49 == 23 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0024.tga
}
{
	if ( (time * 50) % 49 == 24 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0025.tga
}
	{
	if ( (time * 50) % 49 == 25 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0026.tga
}
{
	if ( (time * 50) % 49 == 26 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0027.tga
}
{
	if ( (time * 50) % 49 == 27 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0028.tga
}
{
	if ( (time * 50) % 49 == 28 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0029.tga
}
{
	if ( (time * 50) % 49 == 29 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0030.tga
}
{
	if ( (time * 50) % 49 == 30 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0031.tga
}
{
	if ( (time * 50) % 49 == 31 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0032.tga
}
{
	if ( (time * 50) % 49 == 32 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0033.tga
}
{
	if ( (time * 50) % 49 == 33 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0034.tga
}
{
	if ( (time * 50) % 49 == 34 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0035.tga
}
{
	if ( (time * 50) % 49 == 35 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0036.tga
}
{
	if ( (time * 50) % 49 == 36 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0037.tga
}
{
	if ( (time * 50) % 49 == 37 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0038.tga
}
{
	if ( (time * 50) % 49 == 38 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0039.tga
}
{
	if ( (time * 50) % 49 == 39 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0040.tga
}
{
	if ( (time * 50) % 49 == 40 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0041.tga
}
{
	if ( (time * 50) % 49 == 41 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0042.tga
}
{
	if ( (time * 50) % 49 == 42 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0043.tga
}
{
	if ( (time * 50) % 49 == 43 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0044.tga
}
{
	if ( (time * 50) % 49 == 44 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0045.tga
}
{
	if ( (time * 50) % 49 == 45 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0046.tga
}
{
	if ( (time * 50) % 49 == 46 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0047.tga
}
{
	if ( (time * 50) % 49 == 47 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0048.tga
}
{
	if ( (time * 50) % 49 == 48 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0049.tga
}
{
	if ( (time * 50) % 49 == 49 )
	program		heatHaze.vfp
	vertexParm	0	time * 0.3 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_normalmap/water0050.tga
}
}
 

 

 

Fifty 512x512px frames surely eats processing power so you can always use version with one normalmap scrolling:

 

 

 

refractive_water
{
	qer_editorimage textures/water_source/arc_refractive_ed

	noshadows
	noimpact
	nonsolid

	diffusemap	_black
{	
	blend	specularmap
	map _white
	rgb 0.1
}
{
	blend bumpmap
	map    textures\water_source\water_green_local.tga
	translate time * 0.3 , 0
}

{
	program		 heatHaze.vfp
	vertexParm	  0	   time * 0.3 , time * 0 // scroll
	vertexParm	  1	   2 //magnitude
	fragmentMap	 0	   _currentRender
	fragmentMap	 1	   textures\water_source\water_green_local.tga
}
}
 

 

 

On my system there's maybe 2 fps difference.

It's only a model...

Link to comment
Share on other sites

They probably wouldn't work well together biker. You could try replacing the diffuse _black stage with the Thief water images but it would likely clash. I guess you could use those with a blend filter.

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

Thief's water surely has different number of frames. I tried to replace _black with animated diffusemap but didn't succeed. But one can always add another patch on top with animated diffusemap. Here with alpha 0.1, so very subtle:

 

 

Keep in mind that mirrorrendermap is quite expensive. With specularmap enabled water looks quite nice even without mirror and you gain couple of fps more. Or you could replace mirror with a cubemap.

It's only a model...

Link to comment
Share on other sites

Rain ripples:

 

50 frame animation was created with Blender's dynamic paint and ocean modifier.

Material:

 

 

animated_water_ripples

{
noshadows
noimpact
nonsolid

	diffusemap	_black
{	
	blend	specularmap
	map _white
}
{
	if ( (time * 50) % 49 == 0 )

	blend bumpmap
	map	textures/water_ripples/ripples0001.tga
}
{
	if ( (time * 50) % 49 == 1 )

	blend bumpmap
	map	textures/water_ripples/ripples0002.tga
}
{
	if ( (time * 50) % 49 == 2 )

	blend bumpmap
	map	textures/water_ripples/ripples0003.tga
}
{
	if ( (time * 50) % 49 == 3 )

	blend bumpmap
	map	textures/water_ripples/ripples0004.tga
}
{
	if ( (time * 50) % 49 == 4 )

	blend bumpmap
	map	textures/water_ripples/ripples0005.tga
}
{
	if ( (time * 50) % 49 == 5 )

	blend bumpmap
	map	textures/water_ripples/ripples0006.tga
}
{
	if ( (time * 50) % 49 == 6 )

	blend bumpmap
	map	textures/water_ripples/ripples0007.tga
}
{
	if ( (time * 50) % 49 == 7 )

	blend bumpmap
	map	textures/water_ripples/ripples0008.tga
}
{
	if ( (time * 50) % 49 == 8 )

	blend bumpmap
	map	textures/water_ripples/ripples0009.tga
}
{
	if ( (time * 50) % 49 == 9 )

	blend bumpmap
	map	textures/water_ripples/ripples0010.tga
}
{
	if ( (time * 50) % 49 == 10 )

	blend bumpmap
	map	textures/water_ripples/ripples0011.tga
}
{
	if ( (time * 50) % 49 == 11 )

	blend bumpmap
	map	textures/water_ripples/ripples0012.tga
}
{
	if ( (time * 50) % 49 == 12 )

	blend bumpmap
	map	textures/water_ripples/ripples0013.tga
}
{
	if ( (time * 50) % 49 == 13 )

	blend bumpmap
	map	textures/water_ripples/ripples0014.tga
}
{
	if ( (time * 50) % 49 == 14 )

	blend bumpmap
	map	textures/water_ripples/ripples0015.tga
}
{
	if ( (time * 50) % 49 == 15 )

	blend bumpmap
	map	textures/water_ripples/ripples0016.tga
}
{
	if ( (time * 50) % 49 == 16 )

	blend bumpmap
	map	textures/water_ripples/ripples0017.tga
}
{
	if ( (time * 50) % 49 == 17 )

	blend bumpmap
	map	textures/water_ripples/ripples0018.tga
}
{
	if ( (time * 50) % 49 == 18 )

	blend bumpmap
	map	textures/water_ripples/ripples0019.tga
}
{
	if ( (time * 50) % 49 == 19 )

	blend bumpmap
	map	textures/water_ripples/ripples0020.tga
}
{
	if ( (time * 50) % 49 == 20 )

	blend bumpmap
	map	textures/water_ripples/ripples0021.tga
}
{
	if ( (time * 50) % 49 == 21 )

	blend bumpmap
	map	textures/water_ripples/ripples0022.tga
}
{
	if ( (time * 50) % 49 == 22 )

	blend bumpmap
	map	textures/water_ripples/ripples0023.tga
}
{
	if ( (time * 50) % 49 == 23 )

	blend bumpmap
	map	textures/water_ripples/ripples0024.tga
}
{
	if ( (time * 50) % 49 == 24 )

	blend bumpmap
	map	textures/water_ripples/ripples0025.tga
}
{
	if ( (time * 50) % 49 == 25 )

	blend bumpmap
	map	textures/water_ripples/ripples0026.tga
}
{
	if ( (time * 50) % 49 == 26 )

	blend bumpmap
	map	textures/water_ripples/ripples0027.tga
}
{
	if ( (time * 50) % 49 == 27 )

	blend bumpmap
	map	textures/water_ripples/ripples0028.tga
}
{
	if ( (time * 50) % 49 == 28 )

	blend bumpmap
	map	textures/water_ripples/ripples0029.tga
}
{
	if ( (time * 50) % 49 == 29 )

	blend bumpmap
	map	textures/water_ripples/ripples0030.tga
}
{
	if ( (time * 50) % 49 == 30 )

	blend bumpmap
	map	textures/water_ripples/ripples0031.tga
}
{
	if ( (time * 50) % 49 == 31 )

	blend bumpmap
	map	textures/water_ripples/ripples0032.tga
}
{
	if ( (time * 50) % 49 == 32 )

	blend bumpmap
	map	textures/water_ripples/ripples0033.tga
}
{
	if ( (time * 50) % 49 == 33 )

	blend bumpmap
	map	textures/water_ripples/ripples0034.tga
}
{
	if ( (time * 50) % 49 == 34 )

	blend bumpmap
	map	textures/water_ripples/ripples0035.tga
}
{
	if ( (time * 50) % 49 == 35 )

	blend bumpmap
	map	textures/water_ripples/ripples0036.tga
}
{
	if ( (time * 50) % 49 == 36 )

	blend bumpmap
	map	textures/water_ripples/ripples0037.tga
}
{
	if ( (time * 50) % 49 == 37 )

	blend bumpmap
	map	textures/water_ripples/ripples0038.tga
}
{
	if ( (time * 50) % 49 == 38 )

	blend bumpmap
	map	textures/water_ripples/ripples0039.tga
}
{
	if ( (time * 50) % 49 == 39 )

	blend bumpmap
	map	textures/water_ripples/ripples0040.tga
}
{
	if ( (time * 50) % 49 == 40 )

	blend bumpmap
	map	textures/water_ripples/ripples0041.tga
}
{
	if ( (time * 50) % 49 == 41 )

	blend bumpmap
	map	textures/water_ripples/ripples0042.tga
}
{
	if ( (time * 50) % 49 == 42 )

	blend bumpmap
	map	textures/water_ripples/ripples0043.tga
}
{
	if ( (time * 50) % 49 == 43 )

	blend bumpmap
	map	textures/water_ripples/ripples0044.tga
}
{
	if ( (time * 50) % 49 == 44 )

	blend bumpmap
	map	textures/water_ripples/ripples0045.tga
}
{
	if ( (time * 50) % 49 == 45 )

	blend bumpmap
	map	textures/water_ripples/ripples0046.tga
}
{
	if ( (time * 50) % 49 == 46 )

	blend bumpmap
	map	textures/water_ripples/ripples0047.tga
}
{
	if ( (time * 50) % 49 == 47 )

	blend bumpmap
	map	textures/water_ripples/ripples0048.tga
}
{
	if ( (time * 50) % 49 == 48 )

	blend bumpmap
	map	textures/water_ripples/ripples0049.tga
}
{
	if ( (time * 50) % 49 == 49 )

	blend bumpmap
	map	textures/water_ripples/ripples0050.tga
}


{
	if ( (time * 50) % 49 == 0 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0001.tga
}
{
	if ( (time * 50) % 49 == 1 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0002.tga
}
{
	if ( (time * 50) % 49 == 2 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0003.tga
}
{
	if ( (time * 50) % 49 == 3 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0004.tga
}
{
	if ( (time * 50) % 49 == 4 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0005.tga
}
{
	if ( (time * 50) % 49 == 5 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0006.tga
}
{
	if ( (time * 50) % 49 == 6 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0007.tga
}
{
	if ( (time * 50) % 49 == 7 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0008.tga
}
{
	if ( (time * 50) % 49 == 8 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0009.tga
}
{
	if ( (time * 50) % 49 == 9 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0010.tga
}
{
	if ( (time * 50) % 49 == 10 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0011.tga
}
{
	if ( (time * 50) % 49 == 11 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0012.tga
}
{
	if ( (time * 50) % 49 == 12 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0013.tga
}
{
	if ( (time * 50) % 49 == 13 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0014.tga
}
{
	if ( (time * 50) % 49 == 14 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0015.tga
}
{
	if ( (time * 50) % 49 == 15 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0016.tga
}
{
	if ( (time * 50) % 49 == 16 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0017.tga
}
{
	if ( (time * 50) % 49 == 17 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0018.tga
}
{
	if ( (time * 50) % 49 == 18 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0019.tga
}
{
	if ( (time * 50) % 49 == 19 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0020.tga
}
{
	if ( (time * 50) % 49 == 20 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0021.tga
}
{
	if ( (time * 50) % 49 == 21 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0022.tga
}
{
	if ( (time * 50) % 49 == 22 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0023.tga
}
{
	if ( (time * 50) % 49 == 23 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0024.tga
}
{
	if ( (time * 50) % 49 == 24 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0025.tga
}
	{
	if ( (time * 50) % 49 == 25 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0026.tga
}
{
	if ( (time * 50) % 49 == 26 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0027.tga
}
{
	if ( (time * 50) % 49 == 27 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0028.tga
}
{
	if ( (time * 50) % 49 == 28 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0029.tga
}
{
	if ( (time * 50) % 49 == 29 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0030.tga
}
{
	if ( (time * 50) % 49 == 30 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0031.tga
}
{
	if ( (time * 50) % 49 == 31 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0032.tga
}
{
	if ( (time * 50) % 49 == 32 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0033.tga
}
{
	if ( (time * 50) % 49 == 33 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0034.tga
}
{
	if ( (time * 50) % 49 == 34 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0035.tga
}
{
	if ( (time * 50) % 49 == 35 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0036.tga
}
{
	if ( (time * 50) % 49 == 36 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0037.tga
}
{
	if ( (time * 50) % 49 == 37 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0038.tga
}
{
	if ( (time * 50) % 49 == 38 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0039.tga
}
{
	if ( (time * 50) % 49 == 39 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0040.tga
}
{
	if ( (time * 50) % 49 == 40 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0041.tga
}
{
	if ( (time * 50) % 49 == 41 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0042.tga
}
{
	if ( (time * 50) % 49 == 42 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0043.tga
}
{
	if ( (time * 50) % 49 == 43 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0044.tga
}
{
	if ( (time * 50) % 49 == 44 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0045.tga
}
{
	if ( (time * 50) % 49 == 45 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0046.tga
}
{
	if ( (time * 50) % 49 == 46 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0047.tga
}
{
	if ( (time * 50) % 49 == 47 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0048.tga
}
{
	if ( (time * 50) % 49 == 48 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0049.tga
}
{
	if ( (time * 50) % 49 == 49 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_ripples/ripples0050.tga
}
}
 

 

 

Normalmaps can be downloaded here: https://drive.google.com/file/d/0BwPvgP85AGF1RzBaYUUyVjY5bjQ/edit?usp=sharing

It's only a model...

Link to comment
Share on other sites

Another animated normalmap:

 

Material:

 

 

animated_droplets

{
noshadows
   glass

	diffusemap	_black
{	
	blend	specularmap
	map textures/water_droplets/grey
}
{
	if ( (time * 50) % 49 == 0 )

	blend bumpmap
	map	textures/water_droplets/droplets0001.tga
}
{
	if ( (time * 50) % 49 == 1 )

	blend bumpmap
	map	textures/water_droplets/droplets0002.tga
}
{
	if ( (time * 50) % 49 == 2 )

	blend bumpmap
	map	textures/water_droplets/droplets0003.tga
}
{
	if ( (time * 50) % 49 == 3 )

	blend bumpmap
	map	textures/water_droplets/droplets0004.tga
}
{
	if ( (time * 50) % 49 == 4 )

	blend bumpmap
	map	textures/water_droplets/droplets0005.tga
}
{
	if ( (time * 50) % 49 == 5 )

	blend bumpmap
	map	textures/water_droplets/droplets0006.tga
}
{
	if ( (time * 50) % 49 == 6 )

	blend bumpmap
	map	textures/water_droplets/droplets0007.tga
}
{
	if ( (time * 50) % 49 == 7 )

	blend bumpmap
	map	textures/water_droplets/droplets0008.tga
}
{
	if ( (time * 50) % 49 == 8 )

	blend bumpmap
	map	textures/water_droplets/droplets0009.tga
}
{
	if ( (time * 50) % 49 == 9 )

	blend bumpmap
	map	textures/water_droplets/droplets0010.tga
}
{
	if ( (time * 50) % 49 == 10 )

	blend bumpmap
	map	textures/water_droplets/droplets0011.tga
}
{
	if ( (time * 50) % 49 == 11 )

	blend bumpmap
	map	textures/water_droplets/droplets0012.tga
}
{
	if ( (time * 50) % 49 == 12 )

	blend bumpmap
	map	textures/water_droplets/droplets0013.tga
}
{
	if ( (time * 50) % 49 == 13 )

	blend bumpmap
	map	textures/water_droplets/droplets0014.tga
}
{
	if ( (time * 50) % 49 == 14 )

	blend bumpmap
	map	textures/water_droplets/droplets0015.tga
}
{
	if ( (time * 50) % 49 == 15 )

	blend bumpmap
	map	textures/water_droplets/droplets0016.tga
}
{
	if ( (time * 50) % 49 == 16 )

	blend bumpmap
	map	textures/water_droplets/droplets0017.tga
}
{
	if ( (time * 50) % 49 == 17 )

	blend bumpmap
	map	textures/water_droplets/droplets0018.tga
}
{
	if ( (time * 50) % 49 == 18 )

	blend bumpmap
	map	textures/water_droplets/droplets0019.tga
}
{
	if ( (time * 50) % 49 == 19 )

	blend bumpmap
	map	textures/water_droplets/droplets0020.tga
}
{
	if ( (time * 50) % 49 == 20 )

	blend bumpmap
	map	textures/water_droplets/droplets0021.tga
}
{
	if ( (time * 50) % 49 == 21 )

	blend bumpmap
	map	textures/water_droplets/droplets0022.tga
}
{
	if ( (time * 50) % 49 == 22 )

	blend bumpmap
	map	textures/water_droplets/droplets0023.tga
}
{
	if ( (time * 50) % 49 == 23 )

	blend bumpmap
	map	textures/water_droplets/droplets0024.tga
}
{
	if ( (time * 50) % 49 == 24 )

	blend bumpmap
	map	textures/water_droplets/droplets0025.tga
}
{
	if ( (time * 50) % 49 == 25 )

	blend bumpmap
	map	textures/water_droplets/droplets0026.tga
}
{
	if ( (time * 50) % 49 == 26 )

	blend bumpmap
	map	textures/water_droplets/droplets0027.tga
}
{
	if ( (time * 50) % 49 == 27 )

	blend bumpmap
	map	textures/water_droplets/droplets0028.tga
}
{
	if ( (time * 50) % 49 == 28 )

	blend bumpmap
	map	textures/water_droplets/droplets0029.tga
}
{
	if ( (time * 50) % 49 == 29 )

	blend bumpmap
	map	textures/water_droplets/droplets0030.tga
}
{
	if ( (time * 50) % 49 == 30 )

	blend bumpmap
	map	textures/water_droplets/droplets0031.tga
}
{
	if ( (time * 50) % 49 == 31 )

	blend bumpmap
	map	textures/water_droplets/droplets0032.tga
}
{
	if ( (time * 50) % 49 == 32 )

	blend bumpmap
	map	textures/water_droplets/droplets0033.tga
}
{
	if ( (time * 50) % 49 == 33 )

	blend bumpmap
	map	textures/water_droplets/droplets0034.tga
}
{
	if ( (time * 50) % 49 == 34 )

	blend bumpmap
	map	textures/water_droplets/droplets0035.tga
}
{
	if ( (time * 50) % 49 == 35 )

	blend bumpmap
	map	textures/water_droplets/droplets0036.tga
}
{
	if ( (time * 50) % 49 == 36 )

	blend bumpmap
	map	textures/water_droplets/droplets0037.tga
}
{
	if ( (time * 50) % 49 == 37 )

	blend bumpmap
	map	textures/water_droplets/droplets0038.tga
}
{
	if ( (time * 50) % 49 == 38 )

	blend bumpmap
	map	textures/water_droplets/droplets0039.tga
}
{
	if ( (time * 50) % 49 == 39 )

	blend bumpmap
	map	textures/water_droplets/droplets0040.tga
}
{
	if ( (time * 50) % 49 == 40 )

	blend bumpmap
	map	textures/water_droplets/droplets0041.tga
}
{
	if ( (time * 50) % 49 == 41 )

	blend bumpmap
	map	textures/water_droplets/droplets0042.tga
}
{
	if ( (time * 50) % 49 == 42 )

	blend bumpmap
	map	textures/water_droplets/droplets0043.tga
}
{
	if ( (time * 50) % 49 == 43 )

	blend bumpmap
	map	textures/water_droplets/droplets0044.tga
}
{
	if ( (time * 50) % 49 == 44 )

	blend bumpmap
	map	textures/water_droplets/droplets0045.tga
}
{
	if ( (time * 50) % 49 == 45 )

	blend bumpmap
	map	textures/water_droplets/droplets0046.tga
}
{
	if ( (time * 50) % 49 == 46 )

	blend bumpmap
	map	textures/water_droplets/droplets0047.tga
}
{
	if ( (time * 50) % 49 == 47 )

	blend bumpmap
	map	textures/water_droplets/droplets0048.tga
}
{
	if ( (time * 50) % 49 == 48 )

	blend bumpmap
	map	textures/water_droplets/droplets0049.tga
}
{
	if ( (time * 50) % 49 == 49 )

	blend bumpmap
	map	textures/water_droplets/droplets0050.tga
}


{
	if ( (time * 50) % 49 == 0 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0001.tga
}
{
	if ( (time * 50) % 49 == 1 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0002.tga
}
{
	if ( (time * 50) % 49 == 2 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0003.tga
}
{
	if ( (time * 50) % 49 == 3 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0004.tga
}
{
	if ( (time * 50) % 49 == 4 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0005.tga
}
{
	if ( (time * 50) % 49 == 5 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0006.tga
}
{
	if ( (time * 50) % 49 == 6 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0007.tga
}
{
	if ( (time * 50) % 49 == 7 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0008.tga
}
{
	if ( (time * 50) % 49 == 8 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0009.tga
}
{
	if ( (time * 50) % 49 == 9 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0010.tga
}
{
	if ( (time * 50) % 49 == 10 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0011.tga
}
{
	if ( (time * 50) % 49 == 11 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0012.tga
}
{
	if ( (time * 50) % 49 == 12 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0013.tga
}
{
	if ( (time * 50) % 49 == 13 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0014.tga
}
{
	if ( (time * 50) % 49 == 14 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0015.tga
}
{
	if ( (time * 50) % 49 == 15 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0016.tga
}
{
	if ( (time * 50) % 49 == 16 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0017.tga
}
{
	if ( (time * 50) % 49 == 17 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0018.tga
}
{
	if ( (time * 50) % 49 == 18 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0019.tga
}
{
	if ( (time * 50) % 49 == 19 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0020.tga
}
{
	if ( (time * 50) % 49 == 20 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0021.tga
}
{
	if ( (time * 50) % 49 == 21 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0022.tga
}
{
	if ( (time * 50) % 49 == 22 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0023.tga
}
{
	if ( (time * 50) % 49 == 23 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0024.tga
}
{
	if ( (time * 50) % 49 == 24 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0025.tga
}
	{
	if ( (time * 50) % 49 == 25 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0026.tga
}
{
	if ( (time * 50) % 49 == 26 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0027.tga
}
{
	if ( (time * 50) % 49 == 27 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0028.tga
}
{
	if ( (time * 50) % 49 == 28 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0029.tga
}
{
	if ( (time * 50) % 49 == 29 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0030.tga
}
{
	if ( (time * 50) % 49 == 30 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0031.tga
}
{
	if ( (time * 50) % 49 == 31 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0032.tga
}
{
	if ( (time * 50) % 49 == 32 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0033.tga
}
{
	if ( (time * 50) % 49 == 33 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0034.tga
}
{
	if ( (time * 50) % 49 == 34 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0035.tga
}
{
	if ( (time * 50) % 49 == 35 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0036.tga
}
{
	if ( (time * 50) % 49 == 36 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0037.tga
}
{
	if ( (time * 50) % 49 == 37 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0038.tga
}
{
	if ( (time * 50) % 49 == 38 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0039.tga
}
{
	if ( (time * 50) % 49 == 39 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0040.tga
}
{
	if ( (time * 50) % 49 == 40 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0041.tga
}
{
	if ( (time * 50) % 49 == 41 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0042.tga
}
{
	if ( (time * 50) % 49 == 42 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0043.tga
}
{
	if ( (time * 50) % 49 == 43 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0044.tga
}
{
	if ( (time * 50) % 49 == 44 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0045.tga
}
{
	if ( (time * 50) % 49 == 45 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0046.tga
}
{
	if ( (time * 50) % 49 == 46 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0047.tga
}
{
	if ( (time * 50) % 49 == 47 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0048.tga
}
{
	if ( (time * 50) % 49 == 48 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0049.tga
}
{
	if ( (time * 50) % 49 == 49 )
	program		heatHaze.vfp
	vertexParm	0	time * 0 , time * 0 // scroll
	vertexParm	1	3 //magnitude
	fragmentMap	0	 _currentRender
	fragmentMap	1	textures/water_droplets/droplets0050.tga
}
}
 

Normalmaps can be downloaded here: https://docs.google....GpnblRvY28/edit

It's only a model...

Link to comment
Share on other sites

Looks great. That adds some atmosphere.

If you stare at it a while it gets a touch repetitive. I wonder if it can switch out different patterns. Still great as it is though.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • Ansome

      Finally got my PC back from the shop after my SSD got corrupted a week ago and damaged my motherboard. Scary stuff, but thank goodness it happened right after two months of FM development instead of wiping all my work before I could release it. New SSD, repaired Motherboard and BIOS, and we're ready to start working on my second FM with some added version control in the cloud just to be safe!
      · 1 reply
    • Petike the Taffer  »  DeTeEff

      I've updated the articles for your FMs and your author category at the wiki. Your newer nickname (DeTeEff) now comes first, and the one in parentheses is your older nickname (Fieldmedic). Just to avoid confusing people who played your FMs years ago and remember your older nickname. I've added a wiki article for your latest FM, Who Watches the Watcher?, as part of my current updating efforts. Unless I overlooked something, you have five different FMs so far.
      · 0 replies
    • Petike the Taffer

      I've finally managed to log in to The Dark Mod Wiki. I'm back in the saddle and before the holidays start in full, I'll be adding a few new FM articles and doing other updates. Written in Stone is already done.
      · 4 replies
    • nbohr1more

      TDM 15th Anniversary Contest is now active! Please declare your participation: https://forums.thedarkmod.com/index.php?/topic/22413-the-dark-mod-15th-anniversary-contest-entry-thread/
       
      · 0 replies
    • JackFarmer

      @TheUnbeholden
      You cannot receive PMs. Could you please be so kind and check your mailbox if it is full (or maybe you switched off the function)?
      · 1 reply
×
×
  • Create New...