About Us
HOME EXAMPLES DOWNLOAD HOW TO BUY SUPPORT USER GUIDE FAQS GALLERY

# Effects

### What are effects?

Advanced lighting and material effects like reflection mapping and bump mapping are stored in effect files. Effect files (with the extension .fx) is a standard DirectX technology for storing render states, vertex shaders and pixel shaders into a single file. This technology makes it easier to share effects between applications. Effect files are also called shaders or simply FX.

BluffTitler comes with a collection of more than 70 effects, ready to use and specially designed for video titling.

### How to use effects

From the Media menu, choose Change Effect.... For example if you want your text to be reflection mapped you choose Media > Change Effect... and select the file ReflectionMap.fx. Alternatively you can press the Change Effect... button on the tool window.

Every layer can have its own effect file. Some effects have been created with a specific layer in mind (for example the filter effects work best in the picture layer), but technically any effect can be applied to any layer. Feel free to experiment.

Choose Media > Change Effect... (or press <F9>) for more information about the effect of the active layer.

### Hardware requirements

Some effects require a graphics card that supports Pixel Shader 2.0 or even 3.0. In the effect dialog (menu item Media > Change Effect...) you can find out if your graphics card can handle the effect of the active layer.

Here's a simplified overview of the supported shader models per graphics card. Please consult the technical specs of your graphics card for the exact details.

Graphics Card | Shader Model
NVIDIA GeForce 2 | 1.1
NVIDIA GeForce 3 | 1.1
NVIDIA GeForce 4 | 1.1
NVIDIA GeForce 5 | 2.0
NVIDIA GeForce 6 | 3.0
NVIDIA GeForce 7 | 3.0
NVIDIA GeForce 8 | 4.0
ATI Radeon 8500 | 1.1
ATI Radeon 9000 | 1.1
ATI Radeon 9600 | 2.0
ATI Radeon 9700 | 2.0
ATI Radeon 9800 | 2.0
ATI X300 | 2.0
ATI X700 | 2.0
ATI X800 | 2.0
ATI X850 | 2.0
ATI X1800 | 3.0

### Effect properties

Some effects add new properties to a layer. For example the filters / blur.fx effect file adds the property FX Blur Factor that controls the amount of blur. Effect properties can be recognized by the FX prefix.

### Post-Processing

When you select an effect file in the camera layer, that effect will be used as a fullscreen post-processing effect. All filter effects can be used as post-processing effect.

# Effects and textures

Effects work in close cooperation with textures. For example the bump effect requires a bump texture.

### Associations

For convenience BluffTitler associates texture filenames with effects. For example if you load a texture containing the word reflection (as in ReflectionMap_Gold.jpg) BluffTitler automatically loads the effect file ReflectionMap.fx.

Part of the texture filename | Associated effect
colourmap | Colour mapping
reflection or spheremap | Sphere mapping
cube and .dds | Cube mapping
bump or normalmap | Bump mapping
cartoon | Cartoon mapping
tonalart | Tonal art mapping
gradientwipe or alphamagic | Gradient Wipe

These associations are always used when loading textures or effects with the buttons on the tool window, but can be switched off with the checkbox Try to keep textures and effect matched in the dialog that is displayed when you choose Media > Change Effect....

### Multi-Texturing

Some effects require 2 textures. This is called multi-texturing. You can set the textures in dialog that is displayed after choosing Media > Change Texture...

# Colour mapping

Any picture can be used as a colour map.
Colour maps can easily be created with a digital photo camera.

### Lightened.fx

When you apply this texture to a text layer it looks like this.
You can load a texture with the menu item Media > Change Texture... or with the corresponding button on the tool window.

### NotLightened.fx

This is the same effect, only not lightened. Notice that the sides of the text are now as bright as the front.
You can load the Not_Lightened.fx effect with the menu item Media > Change Effect... or with the corresponding button on the tool window.

### Masked.fx

With this effect the text becomes a window through which you can see a 2D fullscreen textured background. Notice that the texture is always 2D, no matter how you rotate the text.

### MultiTexture / ColourMap_ColourMap.fx

This is a multi-texture effect that combines 2 colour maps. The second texture (the alien) is rendered transparently on top of the first texture.
There's no button on the tool window to select the second texture, but you can do this by choosing Media > Change Texture....

# Reflection mapping with sphere maps

Reflection mapping, also called environment mapping, is a powerful way to create reflection effects.
A correct sphere map looks like the picture on the left, but as long as you do not use sphere-like shapes you can use any picture you like as a sphere map.

### ReflectionMap.fx

This effect makes the object 100% reflective.
This example uses the texture file ReflectionMap_Gold.jpg.

### ReflectionMap_Additive.fx

This is the same effect, only rendered with additive blending.
Additive blending is used to simulate transparency or translucency.

### ReflectionMap_Lightened.fx

This effect combines reflection mapping with lighting. Notice that the side of the text is darker than the front.
With the FX Lighting Factor property you can fine tune the effect from 100% reflected to 100% lightened.

### MultiTexture / ColourMap_Reflection.fx

This multi-texture effect combines reflection mapping with colour mapping. The colour map used is a photo of a wooden floor. This results in a nice shiny wooden surface!
You can select the 2 textures in the dialog that is displayed when choosing Media > Change Texture....

# Reflection mapping with cube maps

Sphere mapping is the easiest reflection mapping technique, but has some drawbacks that become noticeable when using round, sphere-like shapes. Cube mapping solves all those problems resulting in perfect reflections!
A cube map contains 6 square pictures representing the 6 sides of a cube. Technologies to create 360 degree photos include IPIX and Apple's QuickTime VR. You can use Bixorama to convert the 6 pictures into a single .DDS file.

### CubeMapDDS.fx

This effect requires a cube map texture in the DirectX .DDS format.
This example uses the texture CubeMap.dds.

# Bump mapping with normal maps

### Bump Mapping

Bump mapping is a powerful technique that simulates rough or bumped surfaces.
This is how a bumpmap (normalmap) looks like. The surface normals are RGB encoded. For example the colour #88f means the vector (0,0,1) and represents a flat surface. The NVIDIA Photoshop plugin can be used to create bump maps.

### BumpMap.fx

When you apply this bumpmap to a text layer it looks like this.
This example uses the file bumpmap_crusty.png.

### MultiTexture / ColourMap_BumpMap.fx

This multi-texture effect combines colour mapping with bump mapping. The colours are taken from the first texture and the bumps from the second.
With the Specularity property of the text and picture layers you can adjust the reflective quality of the bumps. And with the Texture Scale property you can adjust the size of the bumps.

### MultiTexture / Reflection_BumpMap.fx

This multi-texture effect combines reflection mapping with bump mapping. The first texture is used as a reflection map and the second as a bumpmap.

# Cartoon mapping

A cartoon map looks like this. It is a horizontal gradient from dark (left) to bright (right).
Cartoon maps can easily be created by using the gradient tool of your paint program.

### CartoonMap.fx

This is how a text looks like with the cartoon effect. Notice that the hard transitions from black to red to white correspond to the transitions in the texture.
This example uses the file cartoon_red.bmp.

# Tonal art mapping

With tonal art mapping (TAM), also known as realtime hatching, you can make your texts look very artistic.
BluffTitler uses 4 hatching levels. Level 1 (brightest) is rendered as white, the next 3 levels are RGB encoded. BluffTitler comes with 3 TAMs: dots, lines and crisscross.

### TonalArtMap.fx

This is how the result looks like.
This example uses the file tonalartmap_crisscross.png.

### MultiTexture / Colourmap_TonalArtMap.fx

This multi-texture effect combines colour mapping with tonal art mapping. The first picture is used as the colour map (in this example a picture of Bix) and the second texture is used as a tonal art map.
This effect works amazingly well applied to the video capture layer.

# Animation effects

### Animation / Mrs. Wiggle.fx

The animation folder contains some animations effects including: Bouncer, Bubbler, Jumper, WaveMorpher and this Mrs. Wiggle effect that turns your text into a breakdancer.
This effect has been inspired by the Mr. Wiggle effect from NVIDIA's FX Composer.

### Animation / WavingFlag.fx

The Waving Flag effect turns a picture layer into a flag waving in the wind.

# Filter effects

Filter effects are like the filters you find in paint programs. The big difference is that BluffTitler filter effects work in realtime and can be applied not only to static pictures, but also to videos, including live video coming from your webcam!

Most filter effects require a graphics card that supports pixel shader 2.0, some require 3.0. Select the effect file and press F9 for the details.

### Filters / 4bit.fx

This effect limits the number of colours.

### Filters / Blur.fx

This effect replaces every pixel with the average of the surrounding pixels. Used as a post-processing effect (by applying it to the camera layer) it helps improving antialiasing.

### Filters / Charcoal.fx

This effect turns your picture into a charcoal drawing.

### Filters / Circles.fx

### Filters / ColourInvert.fx

This effect inverts all colours.

### Filters / Contours.fx

### Filters / DistortingMirror.fx

This effect blows up and deflates your picture in a constant loop.

### Filters / DoubleVision.fx

Drunken style.

### Filters / FilmGrain.fx

This effect makes your texture look as if it is seen through frosted glass.

### Filters / LineArt

This shader renders a texture as vertical lines. The thickness of the line depends on the brightness.

### Filters / Median.fx

This effect replaces every pixel with the median of the surrounding pixels. The median is the number dividing the higher half of a collection of samples from the lower half.

### Filters / Pixelbeams.fx

### Filters / Pixelizer.fx

### Filters / WhiteBorder.fx

Adds a white border to your picture.

### MultiTexture / ColourMap_CartoonMap.fx

This effect combines colour mapping with cartoon mapping. It renders your picture in the colours of a cartoon map (second texture) that is using the brightness of a colour map (first texture) as the input.
This example uses the cartoon map cartoon_red.bmp.

# Composition effects

### Compositions / 7Copies.fx

This effect renders your layer 7 times. Each time at the same position, but slightly smaller and darker.

### Compositions / Kaleidoscope.fx

This effect renders your layer 8 times, evenly positioned on a circle.

### Compositions / ReflectiveWater.fx

This effect reflecs your layer in a horizontal plane. The rippling effect can be turned off by setting the FX Rippling Amplitude property to 0.

# Morphing effects

### Morphing / Plane2Cube.fx

The morphing folder contains effects can morph picture layers into mathematical shapes including cubes, cylinders, donuts and spheres. You can use the FX Morphing Stage property to animate the effect.

# Create your own effects

Effect files are text files. When you open an .fx file in a text editor (like Notepad) you can see the source code. If you have some coding experience and know your vector math you can adjust existing effects or create new ones.

Please note: you do not have to understand the following information in order to be able to USE effects. The following information is only meant for software engineers who would like to edit existing effects or create new ones from scratch.

### Vertex format

BluffTitler uses the following vertex format:

float4 | POSITION
float3 | NORMAL (not normalized)
float3 | COLOR
float2 | TEXCOORD0
float3 | TANGENT

### Parameters

The following 27 parameters can be used:

texture | MyTexture0 | The first texture
texture | MyTexture1 | The second texture
float4 | ImageResolution0 | The original image resolution of the first texture (width, height, depth)
float4 | ImageResolution1 | The original image resolution of the second texture (width, height, depth)
float4 | TextureResolution0 | The texture resolution of the first texture (width, height, depth)
float4 | TextureResolution1 | The texture resolution of the second texture (width, height, depth)
float4 | UVBounds0 | The minimum and maximum texture coordinates of the first texture (umin,umax,vmin,vmax)
float4 | UVBounds1 | The minimum and maximum texture coordinates of the second texture (umin,umax,vmin,vmax)
float4x4 | World | The world matrix
float4x4 | View | The view matrix
float4x4 | Projection | The projection matrix
float4x4 | WorldView | The world * view matrix
float4x4 | ViewProjection | The view * projection matrix
float4x4 | WorldViewProjection | The world * view * projection matrix
float4x4 | WorldInverseTranspose | This matrix can be used to transform the normals
float4 | AmbientCol | Ambient light colour * ambient material colour (r,g,b,a)
float4 | DiffuseCol | Diffuse light colour * diffuse material colour (r,g,b,a)
float4 | SpecularCol | Specular light colour * specular material colour (r,g,b,a)
float4 | LightPos | The light position
float4 | LightPosModelSpace | The light position in model space
float | Power | Specular reflection power
float4 | EyePos | The eye (camera) position
float4 | EyePosModelSpace | The eye (camera) position in model space
float | Time | The current time in seconds
float4 | TissueDensity | Used in the voxel layer to make the Tissue Density property available to the FX file
float4 | CharacterIndex | This parameter is used by the text, picture, video and video capture layers (when using the Model Repeat prop) and contains the following information: (current character index, string length, unicode value current index, not used)
float | ParticleAge | This parameter is used by the particle layer and contains the age of the current particle in seconds

### Deprecated variables

The following variables are currently supported, but will be removed in a future version:

float4 MyTextureResolution0 | The original image resolution of the first texture (width, height, depth)
float4 MyTextureResolution1 | The original image resolution of the second texture (width, height, depth)

### Effect info

The Media > Change Effect... dialog displays the description variable:

    string description = "bla bla bla";

### Annotations

An effect file can add 8 extra properties to a layer by using the following annotations:

UIName | The property name as it wil appear in the GUI
UIMin | The minimum value
UIMax | The maximum value
UIDefault | The default value
UISliders | Number of sliders (1,2 or 3)
UIScale | Scale to GUI factor
UIInteger | Set to true for integer variables
UIWidget | Use 2 for a colour dialog, 0 for all other types of variables

The 8 extra properties must be of the type float4 and have to be named Prop0 to Prop7. Here's an example of how you can define an extra property:

    float4 Prop0
    <
    string UIName="Max Iterations";
    float UIMin=0;
    float UIMax=200;
    float3 UIDefault=float3(30,0,0);
    int UISliders=1;
    float UIScale=1;
    bool UIInteger=true;
    int UIWidget=0;
    > = float4(30,0,0,0);

### Alpha Channel

If an effect has a second technique, this technique will be used for alpha channel rendering. This can be used for special alpha effects or for effects that have to set the ColorWriteEnable renderstate.

### Fighting HLSL compiler bugs

Most DirectX HLSL compiler bugs can be worked around by turning off all optimizations. When BluffTitler finds the variable optimization set to false, it turns off all optimizations. This should be a preprocessor directive, but since HLSL does not support this we have implemented it as follows:

    bool optimization=false;

### HLSL technical documentation

The HLSL language specs can be found in the DirectX SDK that can be freely downloaded from Microsoft.

### HLSL tools

We prefer typing our effects in Notepad, but if you are looking for a development environment you could try the following applications:

- NVIDIA's FX Composer
- ATI's Rendermonkey