OSDN Git Service

af94a38f1db933cf1033fbec1be766ebf241d761
[psychlops/silverlight.git] / dev4 / psychlops / extention / standard / shader.cs
1 //------------------------------------------------------------------------------\r
2 // <auto-generated>\r
3 //     このコードはツールによって生成されました。\r
4 //     ランタイム バージョン:4.0.30319.1\r
5 //\r
6 //     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、\r
7 //     コードが再生成されるときに損失したりします。\r
8 // </auto-generated>\r
9 //------------------------------------------------------------------------------\r
10 \r
11 using System;\r
12 using System.Windows;\r
13 using System.Windows.Media;\r
14 using System.Windows.Media.Effects;\r
15 using System.Windows.Media.Media3D;\r
16 \r
17 \r
18 namespace Psychlops\r
19 {\r
20 \r
21 \r
22         public static partial class Figures\r
23         {\r
24 \r
25 \r
26                 public class ShaderGabor : ShaderField\r
27                 {\r
28                         protected Shader.GaborProgram ps = null;\r
29                         public ShaderGabor()\r
30                         {\r
31                                 initialize__ = initialize___;\r
32                                 setParameters = setParameters__;\r
33                         }\r
34                         internal void initialize()\r
35                         {\r
36                                 if (!initialized)\r
37                                 {\r
38                                         Main.canvas.beginInvoke(initialize___);\r
39                                         initialized = true;\r
40                                 }\r
41                         }\r
42                         internal void initialize___()\r
43                         {\r
44                                 if (!initialized)\r
45                                 {\r
46                                         if (ps == null)\r
47                                         {\r
48                                                 ps = new Shader.GaborProgram();\r
49                                                 initializeShader();\r
50                                         }\r
51                                         shader = ps;\r
52                                         initialized = true;\r
53                                 }\r
54                         }\r
55 \r
56                         //public double contrast { get; set; }\r
57                         //public double frequency { get; set; }\r
58                         //public double phase { get; set; }\r
59                         //public double orientation { get; set; }\r
60                         public double contrast = 1.0, wavelength = 20.0, phase = 0.0, orientation = 0.0, alpha = 1.0;\r
61                         public ShaderGabor setSigma(double s)\r
62                         {\r
63                                 set(s*8, s*8);\r
64                                 return this;\r
65                         }\r
66                         \r
67                         public void setParameters__()\r
68                         {\r
69                                 ps.Contrast = contrast;\r
70                                 ps.WaveLength = wavelength;\r
71                                 ps.Phase = phase;\r
72                                 ps.Orientation = orientation;\r
73                                 ps.Sigma = 4.0;\r
74                                 ps.Size = width;\r
75                                 ps.Alpha = alpha;\r
76                                 ps.Update();\r
77                         }\r
78 \r
79 \r
80                 }\r
81         }\r
82 \r
83 \r
84         namespace Shader\r
85         {\r
86                 internal static partial class Connector\r
87                 {\r
88                         internal delegate void PixelShaderConnector(ShaderEffect q, Uri s);\r
89                 }\r
90 \r
91 \r
92                 public abstract class ShaderProgram : ShaderEffect\r
93                 {\r
94                 }\r
95 \r
96                 public class GaborProgram : ShaderProgram\r
97                 {\r
98                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight4;component/Shader/Gabor.ps", UriKind.Relative);\r
99 \r
100                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GaborProgram), 0);\r
101                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
102                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
103                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
104                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
105                         public static readonly DependencyProperty SigmaProperty = DependencyProperty.Register("Sigma", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(4D)), PixelShaderConstantCallback(5)));\r
106                         public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register("Alpha", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(6)));\r
107                         public GaborProgram()\r
108                         {\r
109                                 PixelShader pixelShader = new PixelShader();\r
110                                 pixelShader.UriSource = ps;\r
111                                 this.PixelShader = pixelShader;\r
112 \r
113                                 this.UpdateShaderValue(InputProperty);\r
114                                 this.UpdateShaderValue(ContrastProperty);\r
115                                 this.UpdateShaderValue(FrequencyProperty);\r
116                                 this.UpdateShaderValue(PhaseProperty);\r
117                                 this.UpdateShaderValue(OrientationProperty);\r
118                                 this.UpdateShaderValue(SigmaProperty);\r
119                                 this.UpdateShaderValue(AlphaProperty);\r
120 \r
121                                 Size = 200;\r
122                                 Contrast = 1.0;\r
123                                 WaveLength = 100.0;\r
124                                 Orientation = 0.0;\r
125                                 Sigma = 4.0;\r
126                                 Alpha = 1.0;\r
127                         }\r
128 \r
129                         public void Update()\r
130                         {\r
131                                 this.UpdateShaderValue(InputProperty);\r
132                                 this.UpdateShaderValue(ContrastProperty);\r
133                                 this.UpdateShaderValue(FrequencyProperty);\r
134                                 this.UpdateShaderValue(PhaseProperty);\r
135                                 this.UpdateShaderValue(OrientationProperty);\r
136                                 this.UpdateShaderValue(SigmaProperty);\r
137                                 this.UpdateShaderValue(AlphaProperty);\r
138                         }\r
139 \r
140 \r
141                         private double size__, wavelength__;\r
142                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
143                         private void setFrequency()\r
144                         {\r
145                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
146                                 this.SetValue(FrequencyProperty, freq);\r
147                         }\r
148 \r
149                         /// <summary>Amplitude of Grating</summary>\r
150                         public double Contrast\r
151                         {\r
152                                 get\r
153                                 {\r
154                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
155                                 }\r
156                                 set\r
157                                 {\r
158                                         this.SetValue(ContrastProperty, value / 2.0);\r
159                                 }\r
160                         }\r
161                         /// <summary>Phase of Grating</summary>\r
162                         public double WaveLength\r
163                         {\r
164                                 get\r
165                                 {\r
166                                         return wavelength__;\r
167                                 }\r
168                                 set\r
169                                 {\r
170                                         wavelength__ = value;\r
171                                         setFrequency();\r
172                                 }\r
173                         }\r
174                         /// <summary>Phase of Grating</summary>\r
175                         public double Phase\r
176                         {\r
177                                 get\r
178                                 {\r
179                                         return ((double)(this.GetValue(PhaseProperty)));\r
180                                 }\r
181                                 set\r
182                                 {\r
183                                         this.SetValue(PhaseProperty, value);\r
184                                 }\r
185                         }\r
186                         /// <summary>Orientation of Grating</summary>\r
187                         public double Orientation\r
188                         {\r
189                                 get\r
190                                 {\r
191                                         return ((double)(this.GetValue(OrientationProperty)));\r
192                                 }\r
193                                 set\r
194                                 {\r
195                                         this.SetValue(OrientationProperty, value);\r
196                                 }\r
197                         }\r
198                         /// <summary>Half bandwidth of envelope</summary>\r
199                         public double Sigma\r
200                         {\r
201                                 get\r
202                                 {\r
203                                         return ((double)(this.GetValue(SigmaProperty)));\r
204                                 }\r
205                                 set\r
206                                 {\r
207                                         this.SetValue(SigmaProperty, value);\r
208                                 }\r
209                         }\r
210                         /// <summary>Transparency of Figure</summary>\r
211                         public double Alpha\r
212                         {\r
213                                 get\r
214                                 {\r
215                                         return ((double)(this.GetValue(AlphaProperty)));\r
216                                 }\r
217                                 set\r
218                                 {\r
219                                         this.SetValue(AlphaProperty, value);\r
220                                 }\r
221                         }\r
222                 }\r
223 \r
224         \r
225         }\r
226 }