OSDN Git Service

123
[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                 public class ShaderGaborAlpha : ShaderField\r
84                 {\r
85                         protected Shader.GaborAlphaProgram ps = null;\r
86                         public ShaderGaborAlpha()\r
87                         {\r
88                                 initialize__ = initialize___;\r
89                                 setParameters = setParameters__;\r
90                         }\r
91                         internal void initialize()\r
92                         {\r
93                                 if (!initialized)\r
94                                 {\r
95                                         Main.canvas.beginInvoke(initialize___);\r
96                                         initialized = true;\r
97                                 }\r
98                         }\r
99                         internal void initialize___()\r
100                         {\r
101                                 if (!initialized)\r
102                                 {\r
103                                         if (ps == null)\r
104                                         {\r
105                                                 ps = new Shader.GaborAlphaProgram();\r
106                                                 initializeShader();\r
107                                         }\r
108                                         shader = ps;\r
109                                         initialized = true;\r
110                                 }\r
111                         }\r
112 \r
113                         //public double contrast { get; set; }\r
114                         //public double frequency { get; set; }\r
115                         //public double phase { get; set; }\r
116                         //public double orientation { get; set; }\r
117                         public double contrast = 1.0, wavelength = 20.0, phase = 0.0, orientation = 0.0, alpha = 1.0;\r
118                         public ShaderGaborAlpha setSigma(double s)\r
119                         {\r
120                                 set(s * 8, s * 8);\r
121                                 return this;\r
122                         }\r
123 \r
124                         public void setParameters__()\r
125                         {\r
126                                 ps.Contrast = contrast;\r
127                                 ps.WaveLength = wavelength;\r
128                                 ps.Phase = phase;\r
129                                 ps.Orientation = orientation;\r
130                                 ps.Sigma = 4.0;\r
131                                 ps.Size = width;\r
132                                 ps.Alpha = alpha;\r
133                                 ps.Update();\r
134                         }\r
135 \r
136 \r
137                 }\r
138         }\r
139 \r
140 \r
141         namespace Shader\r
142         {\r
143                 internal static partial class Connector\r
144                 {\r
145                         internal delegate void PixelShaderConnector(ShaderEffect q, Uri s);\r
146                 }\r
147 \r
148 \r
149                 public abstract class ShaderProgram : ShaderEffect\r
150                 {\r
151                 }\r
152 \r
153                 #region GaborProgram\r
154                 public class GaborProgram : ShaderProgram\r
155                 {\r
156                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight4;component/Shader/Gabor.ps", UriKind.Relative);\r
157 \r
158                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GaborProgram), 0);\r
159                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
160                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
161                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
162                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
163                         public static readonly DependencyProperty SigmaProperty = DependencyProperty.Register("Sigma", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(4D)), PixelShaderConstantCallback(5)));\r
164                         public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register("Alpha", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(6)));\r
165                         public GaborProgram()\r
166                         {\r
167                                 PixelShader pixelShader = new PixelShader();\r
168                                 pixelShader.UriSource = ps;\r
169                                 this.PixelShader = pixelShader;\r
170 \r
171                                 this.UpdateShaderValue(InputProperty);\r
172                                 this.UpdateShaderValue(ContrastProperty);\r
173                                 this.UpdateShaderValue(FrequencyProperty);\r
174                                 this.UpdateShaderValue(PhaseProperty);\r
175                                 this.UpdateShaderValue(OrientationProperty);\r
176                                 this.UpdateShaderValue(SigmaProperty);\r
177                                 this.UpdateShaderValue(AlphaProperty);\r
178 \r
179                                 Size = 200;\r
180                                 Contrast = 1.0;\r
181                                 WaveLength = 100.0;\r
182                                 Orientation = 0.0;\r
183                                 Sigma = 4.0;\r
184                                 Alpha = 1.0;\r
185                         }\r
186 \r
187                         public void Update()\r
188                         {\r
189                                 this.UpdateShaderValue(InputProperty);\r
190                                 this.UpdateShaderValue(ContrastProperty);\r
191                                 this.UpdateShaderValue(FrequencyProperty);\r
192                                 this.UpdateShaderValue(PhaseProperty);\r
193                                 this.UpdateShaderValue(OrientationProperty);\r
194                                 this.UpdateShaderValue(SigmaProperty);\r
195                                 this.UpdateShaderValue(AlphaProperty);\r
196                         }\r
197 \r
198 \r
199                         private double size__, wavelength__;\r
200                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
201                         private void setFrequency()\r
202                         {\r
203                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
204                                 this.SetValue(FrequencyProperty, freq);\r
205                         }\r
206 \r
207                         /// <summary>Amplitude of Grating</summary>\r
208                         public double Contrast\r
209                         {\r
210                                 get\r
211                                 {\r
212                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
213                                 }\r
214                                 set\r
215                                 {\r
216                                         this.SetValue(ContrastProperty, value / 2.0);\r
217                                 }\r
218                         }\r
219                         /// <summary>Phase of Grating</summary>\r
220                         public double WaveLength\r
221                         {\r
222                                 get\r
223                                 {\r
224                                         return wavelength__;\r
225                                 }\r
226                                 set\r
227                                 {\r
228                                         wavelength__ = value;\r
229                                         setFrequency();\r
230                                 }\r
231                         }\r
232                         /// <summary>Phase of Grating</summary>\r
233                         public double Phase\r
234                         {\r
235                                 get\r
236                                 {\r
237                                         return ((double)(this.GetValue(PhaseProperty)));\r
238                                 }\r
239                                 set\r
240                                 {\r
241                                         this.SetValue(PhaseProperty, value);\r
242                                 }\r
243                         }\r
244                         /// <summary>Orientation of Grating</summary>\r
245                         public double Orientation\r
246                         {\r
247                                 get\r
248                                 {\r
249                                         return ((double)(this.GetValue(OrientationProperty)));\r
250                                 }\r
251                                 set\r
252                                 {\r
253                                         this.SetValue(OrientationProperty, value);\r
254                                 }\r
255                         }\r
256                         /// <summary>Half bandwidth of envelope</summary>\r
257                         public double Sigma\r
258                         {\r
259                                 get\r
260                                 {\r
261                                         return ((double)(this.GetValue(SigmaProperty)));\r
262                                 }\r
263                                 set\r
264                                 {\r
265                                         this.SetValue(SigmaProperty, value);\r
266                                 }\r
267                         }\r
268                         /// <summary>Transparency of Figure</summary>\r
269                         public double Alpha\r
270                         {\r
271                                 get\r
272                                 {\r
273                                         return ((double)(this.GetValue(AlphaProperty)));\r
274                                 }\r
275                                 set\r
276                                 {\r
277                                         this.SetValue(AlphaProperty, value);\r
278                                 }\r
279                         }\r
280                 }\r
281                 #endregion\r
282 \r
283                 #region GaborAlphaProgram\r
284                 public class GaborAlphaProgram : ShaderProgram\r
285                 {\r
286                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight4;component/Shader/GaborAlpha.ps", UriKind.Relative);\r
287 \r
288                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GaborAlphaProgram), 0);\r
289                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
290                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
291                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
292                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
293                         public static readonly DependencyProperty SigmaProperty = DependencyProperty.Register("Sigma", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(4D)), PixelShaderConstantCallback(5)));\r
294                         public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register("Alpha", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(6)));\r
295                         public GaborAlphaProgram()\r
296                         {\r
297                                 PixelShader pixelShader = new PixelShader();\r
298                                 pixelShader.UriSource = ps;\r
299                                 this.PixelShader = pixelShader;\r
300 \r
301                                 this.UpdateShaderValue(InputProperty);\r
302                                 this.UpdateShaderValue(ContrastProperty);\r
303                                 this.UpdateShaderValue(FrequencyProperty);\r
304                                 this.UpdateShaderValue(PhaseProperty);\r
305                                 this.UpdateShaderValue(OrientationProperty);\r
306                                 this.UpdateShaderValue(SigmaProperty);\r
307                                 this.UpdateShaderValue(AlphaProperty);\r
308 \r
309                                 Size = 200;\r
310                                 Contrast = 1.0;\r
311                                 WaveLength = 100.0;\r
312                                 Orientation = 0.0;\r
313                                 Sigma = 4.0;\r
314                                 Alpha = 1.0;\r
315                         }\r
316 \r
317                         public void Update()\r
318                         {\r
319                                 this.UpdateShaderValue(InputProperty);\r
320                                 this.UpdateShaderValue(ContrastProperty);\r
321                                 this.UpdateShaderValue(FrequencyProperty);\r
322                                 this.UpdateShaderValue(PhaseProperty);\r
323                                 this.UpdateShaderValue(OrientationProperty);\r
324                                 this.UpdateShaderValue(SigmaProperty);\r
325                                 this.UpdateShaderValue(AlphaProperty);\r
326                         }\r
327 \r
328 \r
329                         private double size__, wavelength__;\r
330                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
331                         private void setFrequency()\r
332                         {\r
333                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
334                                 this.SetValue(FrequencyProperty, freq);\r
335                         }\r
336 \r
337                         /// <summary>Amplitude of Grating</summary>\r
338                         public double Contrast\r
339                         {\r
340                                 get\r
341                                 {\r
342                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
343                                 }\r
344                                 set\r
345                                 {\r
346                                         this.SetValue(ContrastProperty, value / 2.0);\r
347                                 }\r
348                         }\r
349                         /// <summary>Phase of Grating</summary>\r
350                         public double WaveLength\r
351                         {\r
352                                 get\r
353                                 {\r
354                                         return wavelength__;\r
355                                 }\r
356                                 set\r
357                                 {\r
358                                         wavelength__ = value;\r
359                                         setFrequency();\r
360                                 }\r
361                         }\r
362                         /// <summary>Phase of Grating</summary>\r
363                         public double Phase\r
364                         {\r
365                                 get\r
366                                 {\r
367                                         return ((double)(this.GetValue(PhaseProperty)));\r
368                                 }\r
369                                 set\r
370                                 {\r
371                                         this.SetValue(PhaseProperty, value);\r
372                                 }\r
373                         }\r
374                         /// <summary>Orientation of Grating</summary>\r
375                         public double Orientation\r
376                         {\r
377                                 get\r
378                                 {\r
379                                         return ((double)(this.GetValue(OrientationProperty)));\r
380                                 }\r
381                                 set\r
382                                 {\r
383                                         this.SetValue(OrientationProperty, value);\r
384                                 }\r
385                         }\r
386                         /// <summary>Half bandwidth of envelope</summary>\r
387                         public double Sigma\r
388                         {\r
389                                 get\r
390                                 {\r
391                                         return ((double)(this.GetValue(SigmaProperty)));\r
392                                 }\r
393                                 set\r
394                                 {\r
395                                         this.SetValue(SigmaProperty, value);\r
396                                 }\r
397                         }\r
398                         /// <summary>Transparency of Figure</summary>\r
399                         public double Alpha\r
400                         {\r
401                                 get\r
402                                 {\r
403                                         return ((double)(this.GetValue(AlphaProperty)));\r
404                                 }\r
405                                 set\r
406                                 {\r
407                                         this.SetValue(AlphaProperty, value);\r
408                                 }\r
409                         }\r
410                 }\r
411                 #endregion\r
412         \r
413         }\r
414 }