FXTrigField

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(Removing all content from page)
m (Reverted edits by Joseph05408 (Talk); changed back to last version by Tsphillips)
Line 1: Line 1:
 +
==Description==
 +
A shader that produces a force field effect using trigonometric functions.
  
 +
==Usage==
 +
Color adjusts the field color. Rate adjusts the rate at which the field moves. Scale adjusts the granularity of detail seen in the field.
 +
This shader has two configuration defines:
 +
 +
====#define USE_TAN====
 +
Default. When this symbol is defined, the field has more defined patterns and will over-saturate the colors, yielding more of an energy effect.
 +
When this symbol is not defined (i.e., #undef USE_TAN), the field is generally amorphous in appearance.
 +
 +
====#define USE_LINES====
 +
Disabled by default. When this symbol is defined, any patterns appear linear rather than curved.
 +
By default this symbol is not defined (i.e., #undef USE_LINES).
 +
 +
<ShaderLab - FX/TrigField>//
 +
// Shader: "FX/TrigField"
 +
// Version: v1.0
 +
// Written by: Thomas Phillips
 +
//
 +
// Anyone is free to use this shader for non-commercial or commercial projects.
 +
//
 +
// Description:
 +
// Generic force field effect.
 +
// Play with color, opacity, and rate for different effects.
 +
//
 +
 +
Shader "FX/TrigField" {
 +
 +
Properties {
 +
_Color ("Color Tint", Color) = (0, 0, 0.5, 1.0)
 +
_Rate ("Oscillation Rate", Range (1, 10)) = 1.0
 +
_Scale ("Ripple Scale", Range (1, 30)) = 10.0
 +
}
 +
 +
SubShader {
 +
 +
ZWrite Off
 +
Tags { "Queue" = "Transparent" }
 +
Blend One One
 +
 +
Pass {
 +
 +
CGPROGRAM
 +
 +
// Define/undefine either/both of these for a differnt variant.
 +
#define USE_TAN
 +
#undef USE_LINES
 +
 +
#pragma vertex vert
 +
#pragma fragment frag
 +
#pragma fragmentoption ARB_fog_exp2
 +
#include "UnityCG.cginc"
 +
 +
float4 _Color;
 +
float _Rate;
 +
float _Scale;
 +
 +
struct v2f {
 +
V2F_POS_FOG;
 +
float4 texcoord : TEXCOORD0;
 +
float4[4] target : TEXCOORD1;
 +
};
 +
 +
v2f vert (appdata_base v)
 +
{
 +
v2f o;
 +
PositionFog( v.vertex, o.pos, o.fog );
 +
o.texcoord = v.texcoord;
 +
int j;
 +
for ( j = 2; j < 5; j++) {
 +
float a, b;
 +
sincos(j*_Time[0], a, b);
 +
o.target[j-2] = float4(a, b, 0, 0);
 +
}
 +
return o;
 +
}
 +
 +
half4 frag (v2f i) : COLOR
 +
{
 +
float4 d;
 +
int j;
 +
float r = _Time[1] * _Rate;
 +
for ( j = 0; j < 3; j++) {
 +
#ifdef USE_LINES
 +
#ifdef USE_TAN
 +
d[j] = tan(_Scale * dot(i.texcoord, i.target[j]) - r);
 +
#else
 +
d[j] = sin(_Scale * dot(i.texcoord, i.target[j]) - r) * 3;
 +
#endif
 +
#else
 +
#ifdef USE_TAN
 +
d[j] = tan(_Scale * distance(i.texcoord, i.target[j]) - r);
 +
#else
 +
d[j] = sin(_Scale * distance(i.texcoord, i.target[j]) - r) * 3;
 +
#endif
 +
#endif
 +
} // for
 +
return half4( (dot(d, d) * _Color).xyz, 1 );
 +
}
 +
ENDCG
 +
 +
    }
 +
}
 +
Fallback "Transparent/Diffuse"
 +
}

Revision as of 19:12, 19 October 2009

Contents

Description

A shader that produces a force field effect using trigonometric functions.

Usage

Color adjusts the field color. Rate adjusts the rate at which the field moves. Scale adjusts the granularity of detail seen in the field. This shader has two configuration defines:

#define USE_TAN

Default. When this symbol is defined, the field has more defined patterns and will over-saturate the colors, yielding more of an energy effect. When this symbol is not defined (i.e., #undef USE_TAN), the field is generally amorphous in appearance.

#define USE_LINES

Disabled by default. When this symbol is defined, any patterns appear linear rather than curved. By default this symbol is not defined (i.e., #undef USE_LINES).

<ShaderLab - FX/TrigField>// // Shader: "FX/TrigField" // Version: v1.0 // Written by: Thomas Phillips // // Anyone is free to use this shader for non-commercial or commercial projects. // // Description: // Generic force field effect. // Play with color, opacity, and rate for different effects. //

Shader "FX/TrigField" {

Properties { _Color ("Color Tint", Color) = (0, 0, 0.5, 1.0) _Rate ("Oscillation Rate", Range (1, 10)) = 1.0 _Scale ("Ripple Scale", Range (1, 30)) = 10.0 }

SubShader {

ZWrite Off Tags { "Queue" = "Transparent" } Blend One One

Pass {

CGPROGRAM

// Define/undefine either/both of these for a differnt variant.

  1. define USE_TAN
  2. undef USE_LINES
  1. pragma vertex vert
  2. pragma fragment frag
  3. pragma fragmentoption ARB_fog_exp2
  4. include "UnityCG.cginc"

float4 _Color; float _Rate; float _Scale;

struct v2f { V2F_POS_FOG; float4 texcoord : TEXCOORD0; float4[4] target : TEXCOORD1; };

v2f vert (appdata_base v) { v2f o; PositionFog( v.vertex, o.pos, o.fog ); o.texcoord = v.texcoord; int j; for ( j = 2; j < 5; j++) { float a, b; sincos(j*_Time[0], a, b); o.target[j-2] = float4(a, b, 0, 0); } return o; }

half4 frag (v2f i) : COLOR { float4 d; int j; float r = _Time[1] * _Rate; for ( j = 0; j < 3; j++) {

  1. ifdef USE_LINES
  2. ifdef USE_TAN

d[j] = tan(_Scale * dot(i.texcoord, i.target[j]) - r);

  1. else

d[j] = sin(_Scale * dot(i.texcoord, i.target[j]) - r) * 3;

  1. endif
  2. else
  3. ifdef USE_TAN

d[j] = tan(_Scale * distance(i.texcoord, i.target[j]) - r);

  1. else

d[j] = sin(_Scale * distance(i.texcoord, i.target[j]) - r) * 3;

  1. endif
  2. endif

} // for return half4( (dot(d, d) * _Color).xyz, 1 ); } ENDCG

   }

} Fallback "Transparent/Diffuse" }

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox