OSDN Git Service

shader
[psychlops/silverlight.git] / dev4 / Shader / GaborAlpha.fx
diff --git a/dev4/Shader/GaborAlpha.fx b/dev4/Shader/GaborAlpha.fx
new file mode 100644 (file)
index 0000000..095d01f
--- /dev/null
@@ -0,0 +1,60 @@
+/// <summary>Amplitude of Grating</summary>\r
+/// <minValue>0</minValue>\r
+/// <maxValue>1</maxValue>\r
+/// <defaultValue>1</defaultValue>\r
+float contrast : register(C1);\r
+\r
+/// <summary>Phase of Grating</summary>\r
+/// <minValue>0</minValue>\r
+/// <maxValue>100</maxValue>\r
+/// <defaultValue>100</defaultValue>\r
+float frequency: register(C2);\r
+\r
+/// <summary>Phase of Grating</summary>\r
+/// <minValue>0</minValue>\r
+/// <maxValue>6.283184</maxValue>\r
+/// <defaultValue>0</defaultValue>\r
+float phase: register(C3);\r
+\r
+/// <summary>Orientation of Grating</summary>\r
+/// <minValue>0</minValue>\r
+/// <maxValue>6.283184</maxValue>\r
+/// <defaultValue>0</defaultValue>\r
+float orientation: register(C4);\r
+\r
+/// <summary>Half bandwidth of envelope</summary>\r
+/// <minValue>2</minValue>\r
+/// <maxValue>8</maxValue>\r
+/// <defaultValue>4</defaultValue>\r
+float sigma : register(C5);\r
+\r
+/// <summary>Transparency of Figure</summary>\r
+/// <minValue>0</minValue>\r
+/// <maxValue>1</maxValue>\r
+/// <defaultValue>1</defaultValue>\r
+float alpha : register(C6);\r
+\r
+\r
+float rp(float2 uv)\r
+{\r
+       const float2 Center = float2(0.5,0.5);\r
+       float2 dir = uv - Center; // vector from center to pixel\r
+       float dist = length(dir);\r
+       //dir /= dist;\r
+       return dist;\r
+}\r
+\r
+float4 main(float2 uv : TEXCOORD) : COLOR\r
+//float4 main(float2 uv : VPOS ) : COLOR\r
+{\r
+       //float _r = rp(uv)*sigma*4.0;\r
+       //float env = exp( -(_r*_r) / 2.0 ) * alpha;\r
+       float _r = rp(uv)*8;\r
+       float env = exp( -(_r*_r) / (2.0) ) * alpha;\r
+\r
+       float _x = sin(orientation)*uv[0]-cos(orientation)*uv[1];\r
+       float l = 0.5+env*contrast*0.5*cos(frequency*_x + phase);\r
+       \r
+       float4 color = float4(l,l,l,1.0);\r
+       return color;\r
+}\r