OSDN Git Service

5
[psychlops/silverlight.git] / dev5 / psychlops / extension / 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                 public class ShaderGrating : ShaderField\r
26                 {\r
27                         protected Shader.GratingProgram ps = null;\r
28                         public ShaderGrating()\r
29                         {\r
30                                 initialize__ = initialize___;\r
31                                 setParameters = setParameters__;\r
32                         }\r
33                         internal void initialize()\r
34                         {\r
35                                 if (!initialized)\r
36                                 {\r
37                                         Main.canvas.beginInvoke(initialize___);\r
38                                         initialized = true;\r
39                                 }\r
40                         }\r
41                         internal void initialize___()\r
42                         {\r
43                                 if (!initialized)\r
44                                 {\r
45                                         if (ps == null)\r
46                                         {\r
47                                                 ps = new Shader.GratingProgram();\r
48                                                 initializeShader();\r
49                                         }\r
50                                         shader = ps;\r
51                                         initialized = true;\r
52                                 }\r
53                         }\r
54 \r
55                         public double contrast = 1.0, wavelength = 20.0, phase = 0.0, orientation = 0.0;\r
56                         public ShaderGrating setSize(double s) { set(s, s); return this; }\r
57                         public ShaderGrating setSize(double h, double v) { set(h, v); return this; }\r
58 \r
59                         public void setParameters__()\r
60                         {\r
61                                 ps.Contrast = contrast;\r
62                                 ps.WaveLength = wavelength;\r
63                                 ps.Phase = phase;\r
64                                 ps.Orientation = orientation;\r
65                                 ps.SizeH = width;\r
66                                 ps.SizeV = height;\r
67                                 ps.Update();\r
68                         }\r
69 \r
70 \r
71                 }\r
72 \r
73 \r
74                 public class ShaderPlaid : ShaderField\r
75                 {\r
76                         protected Shader.PlaidProgram ps = null;\r
77                         public ShaderPlaid()\r
78                         {\r
79                                 initialize__ = initialize___;\r
80                                 setParameters = setParameters__;\r
81                         }\r
82                         internal void initialize()\r
83                         {\r
84                                 if (!initialized)\r
85                                 {\r
86                                         Main.canvas.beginInvoke(initialize___);\r
87                                         initialized = true;\r
88                                 }\r
89                         }\r
90                         internal void initialize___()\r
91                         {\r
92                                 if (!initialized)\r
93                                 {\r
94                                         if (ps == null)\r
95                                         {\r
96                                                 ps = new Shader.PlaidProgram();\r
97                                                 initializeShader();\r
98                                         }\r
99                                         shader = ps;\r
100                                         initialized = true;\r
101                                 }\r
102                         }\r
103 \r
104                         public double contrast = 0.5, wavelength = 20.0, phase = 0.0, orientation = 0.0;\r
105                         public double contrast2 = 0.5, wavelength2 = 20.0, phase2 = 0.0, orientation2 = Math.PI / 4;\r
106                         public ShaderPlaid setSize(double s) { set(s, s); return this; }\r
107                         public ShaderPlaid setSize(double h, double v) { set(h, v); return this; }\r
108 \r
109                         public void setParameters__()\r
110                         {\r
111                                 ps.Contrast = contrast;\r
112                                 ps.WaveLength = wavelength;\r
113                                 ps.Phase = phase;\r
114                                 ps.Orientation = orientation;\r
115                                 ps.Size = width;\r
116                                 ps.Contrast2 = contrast;\r
117                                 ps.WaveLength2 = wavelength;\r
118                                 ps.Phase2 = phase;\r
119                                 ps.Orientation2 = orientation;\r
120                                 ps.SizeH = width;\r
121                                 ps.SizeV = height;\r
122                                 ps.Update();\r
123                         }\r
124 \r
125 \r
126                 }\r
127 \r
128 \r
129                 public class ShaderGabor : ShaderField\r
130                 {\r
131                         protected Shader.GaborProgram ps = null;\r
132                         public ShaderGabor()\r
133                         {\r
134                                 initialize__ = initialize___;\r
135                                 setParameters = setParameters__;\r
136                         }\r
137                         internal void initialize()\r
138                         {\r
139                                 if (!initialized)\r
140                                 {\r
141                                         Main.canvas.beginInvoke(initialize___);\r
142                                         initialized = true;\r
143                                 }\r
144                         }\r
145                         internal void initialize___()\r
146                         {\r
147                                 if (!initialized)\r
148                                 {\r
149                                         if (ps == null)\r
150                                         {\r
151                                                 ps = new Shader.GaborProgram();\r
152                                                 initializeShader();\r
153                                         }\r
154                                         shader = ps;\r
155                                         initialized = true;\r
156                                 }\r
157                         }\r
158 \r
159                         //public double contrast { get; set; }\r
160                         //public double frequency { get; set; }\r
161                         //public double phase { get; set; }\r
162                         //public double orientation { get; set; }\r
163                         public double contrast = 1.0, wavelength = 20.0, phase = 0.0, orientation = 0.0, alpha = 1.0;\r
164                         public ShaderGabor setSigma(double s)\r
165                         {\r
166                                 set(s*8, s*8);\r
167                                 return this;\r
168                         }\r
169                         \r
170                         public void setParameters__()\r
171                         {\r
172                                 ps.Contrast = contrast;\r
173                                 ps.WaveLength = wavelength;\r
174                                 ps.Phase = phase;\r
175                                 ps.Orientation = orientation;\r
176                                 ps.Sigma = 4.0;\r
177                                 ps.Size = width;\r
178                                 ps.Alpha = alpha;\r
179                                 ps.Update();\r
180                         }\r
181 \r
182 \r
183                 }\r
184 \r
185 \r
186                 public class ShaderGaborAlpha : ShaderField\r
187                 {\r
188                         protected Shader.GaborAlphaProgram ps = null;\r
189                         public ShaderGaborAlpha()\r
190                         {\r
191                                 initialize__ = initialize___;\r
192                                 setParameters = setParameters__;\r
193                         }\r
194                         internal void initialize()\r
195                         {\r
196                                 if (!initialized)\r
197                                 {\r
198                                         Main.canvas.beginInvoke(initialize___);\r
199                                         initialized = true;\r
200                                 }\r
201                         }\r
202                         internal void initialize___()\r
203                         {\r
204                                 if (!initialized)\r
205                                 {\r
206                                         if (ps == null)\r
207                                         {\r
208                                                 ps = new Shader.GaborAlphaProgram();\r
209                                                 initializeShader();\r
210                                         }\r
211                                         shader = ps;\r
212                                         initialized = true;\r
213                                 }\r
214                         }\r
215 \r
216                         //public double contrast { get; set; }\r
217                         //public double frequency { get; set; }\r
218                         //public double phase { get; set; }\r
219                         //public double orientation { get; set; }\r
220                         public double contrast = 1.0, wavelength = 20.0, phase = 0.0, orientation = 0.0, alpha = 1.0;\r
221                         public ShaderGaborAlpha setSigma(double s)\r
222                         {\r
223                                 set(s * 8, s * 8);\r
224                                 return this;\r
225                         }\r
226 \r
227                         public void setParameters__()\r
228                         {\r
229                                 ps.Contrast = contrast;\r
230                                 ps.WaveLength = wavelength;\r
231                                 ps.Phase = phase;\r
232                                 ps.Orientation = orientation;\r
233                                 ps.Sigma = 4.0;\r
234                                 ps.Size = width;\r
235                                 ps.Alpha = alpha;\r
236                                 ps.Update();\r
237                         }\r
238 \r
239 \r
240                 }\r
241         }\r
242 \r
243 \r
244         namespace Shader\r
245         {\r
246                 internal static partial class Connector\r
247                 {\r
248                         internal delegate void PixelShaderConnector(ShaderEffect q, Uri s);\r
249                 }\r
250 \r
251 \r
252                 public abstract class ShaderProgram : ShaderEffect\r
253                 {\r
254                 }\r
255 \r
256                 #region GratingProgram\r
257                 public class GratingProgram : ShaderProgram\r
258                 {\r
259                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight5;component/Shader/Grating.ps", UriKind.Relative);\r
260 \r
261                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GratingProgram), 0);\r
262                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GratingProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
263                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GratingProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
264                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GratingProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
265                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GratingProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
266                         public static readonly DependencyProperty SizeHProperty = DependencyProperty.Register("SizeH", typeof(double), typeof(GratingProgram), new PropertyMetadata(((double)(32D)), PixelShaderConstantCallback(5)));\r
267                         public static readonly DependencyProperty SizeVProperty = DependencyProperty.Register("SizeV", typeof(double), typeof(GratingProgram), new PropertyMetadata(((double)(32D)), PixelShaderConstantCallback(6)));\r
268                         public GratingProgram()\r
269                         {\r
270                                 PixelShader pixelShader = new PixelShader();\r
271                                 pixelShader.UriSource = ps;\r
272                                 this.PixelShader = pixelShader;\r
273 \r
274                                 this.UpdateShaderValue(InputProperty);\r
275                                 this.UpdateShaderValue(ContrastProperty);\r
276                                 this.UpdateShaderValue(FrequencyProperty);\r
277                                 this.UpdateShaderValue(PhaseProperty);\r
278                                 this.UpdateShaderValue(OrientationProperty);\r
279                                 this.UpdateShaderValue(SizeHProperty);\r
280                                 this.UpdateShaderValue(SizeVProperty);\r
281 \r
282                                 Size = 200;\r
283                                 Contrast = 1.0;\r
284                                 WaveLength = 100.0;\r
285                                 Orientation = 0.0;\r
286                                 SizeH = 32.0;\r
287                                 SizeV = 32.0;\r
288                         }\r
289 \r
290                         public void Update()\r
291                         {\r
292                                 this.UpdateShaderValue(InputProperty);\r
293                                 this.UpdateShaderValue(ContrastProperty);\r
294                                 this.UpdateShaderValue(FrequencyProperty);\r
295                                 this.UpdateShaderValue(PhaseProperty);\r
296                                 this.UpdateShaderValue(OrientationProperty);\r
297                                 this.UpdateShaderValue(SizeHProperty);\r
298                                 this.UpdateShaderValue(SizeVProperty);\r
299                         }\r
300 \r
301 \r
302                         private double size__, wavelength__;\r
303                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
304                         private void setFrequency()\r
305                         {\r
306                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
307                                 this.SetValue(FrequencyProperty, freq);\r
308                         }\r
309 \r
310                         /// <summary>Amplitude of Grating</summary>\r
311                         public double Contrast\r
312                         {\r
313                                 get\r
314                                 {\r
315                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
316                                 }\r
317                                 set\r
318                                 {\r
319                                         this.SetValue(ContrastProperty, value / 2.0);\r
320                                 }\r
321                         }\r
322                         /// <summary>Phase of Grating</summary>\r
323                         public double WaveLength\r
324                         {\r
325                                 get\r
326                                 {\r
327                                         return wavelength__;\r
328                                 }\r
329                                 set\r
330                                 {\r
331                                         wavelength__ = value;\r
332                                         setFrequency();\r
333                                 }\r
334                         }\r
335                         /// <summary>Phase of Grating</summary>\r
336                         public double Phase\r
337                         {\r
338                                 get\r
339                                 {\r
340                                         return ((double)(this.GetValue(PhaseProperty)));\r
341                                 }\r
342                                 set\r
343                                 {\r
344                                         this.SetValue(PhaseProperty, value);\r
345                                 }\r
346                         }\r
347                         /// <summary>Orientation of Grating</summary>\r
348                         public double Orientation\r
349                         {\r
350                                 get\r
351                                 {\r
352                                         return ((double)(this.GetValue(OrientationProperty)));\r
353                                 }\r
354                                 set\r
355                                 {\r
356                                         this.SetValue(OrientationProperty, value);\r
357                                 }\r
358                         }\r
359                         /// <summary>Width of envelope</summary>\r
360                         public double SizeH\r
361                         {\r
362                                 get\r
363                                 {\r
364                                         return ((double)(this.GetValue(SizeHProperty)));\r
365                                 }\r
366                                 set\r
367                                 {\r
368                                         this.SetValue(SizeHProperty, value);\r
369                                 }\r
370                         }\r
371                         /// <summary>Height of Figure</summary>\r
372                         public double SizeV\r
373                         {\r
374                                 get\r
375                                 {\r
376                                         return ((double)(this.GetValue(SizeVProperty)));\r
377                                 }\r
378                                 set\r
379                                 {\r
380                                         this.SetValue(SizeVProperty, value);\r
381                                 }\r
382                         }\r
383                 }\r
384                 #endregion\r
385 \r
386                 #region PlaidProgram\r
387                 public class PlaidProgram : ShaderProgram\r
388                 {\r
389                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight5;component/Shader/Plaid.ps", UriKind.Relative);\r
390 \r
391                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(PlaidProgram), 0);\r
392                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(0.5D)), PixelShaderConstantCallback(1)));\r
393                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
394                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
395                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
396                         public static readonly DependencyProperty Contrast2Property = DependencyProperty.Register("Contrast2", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(0.5D)), PixelShaderConstantCallback(5)));\r
397                         public static readonly DependencyProperty Frequency2Property = DependencyProperty.Register("Frequency2", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(6)));\r
398                         public static readonly DependencyProperty Phase2Property = DependencyProperty.Register("Phase2", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(7)));\r
399                         public static readonly DependencyProperty Orientation2Property = DependencyProperty.Register("Orientation2", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(0.785398D)), PixelShaderConstantCallback(8)));\r
400                         public static readonly DependencyProperty SizeHProperty = DependencyProperty.Register("SizeH", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(32D)), PixelShaderConstantCallback(9)));\r
401                         public static readonly DependencyProperty SizeVProperty = DependencyProperty.Register("SizeV", typeof(double), typeof(PlaidProgram), new PropertyMetadata(((double)(32D)), PixelShaderConstantCallback(10)));\r
402                         public PlaidProgram()\r
403                         {\r
404                                 PixelShader pixelShader = new PixelShader();\r
405                                 pixelShader.UriSource = ps;\r
406                                 this.PixelShader = pixelShader;\r
407 \r
408                                 this.UpdateShaderValue(InputProperty);\r
409                                 this.UpdateShaderValue(ContrastProperty);\r
410                                 this.UpdateShaderValue(FrequencyProperty);\r
411                                 this.UpdateShaderValue(PhaseProperty);\r
412                                 this.UpdateShaderValue(OrientationProperty);\r
413                                 this.UpdateShaderValue(Contrast2Property);\r
414                                 this.UpdateShaderValue(Frequency2Property);\r
415                                 this.UpdateShaderValue(Phase2Property);\r
416                                 this.UpdateShaderValue(Orientation2Property);\r
417                                 this.UpdateShaderValue(SizeHProperty);\r
418                                 this.UpdateShaderValue(SizeVProperty);\r
419 \r
420                                 Size = 200;\r
421                                 Contrast = 0.5;\r
422                                 WaveLength = 100.0;\r
423                                 Phase = 0.0;\r
424                                 Orientation = 0.0;\r
425                                 Contrast2 = 0.5;\r
426                                 WaveLength2 = 100.0;\r
427                                 Phase2 = 0.0;\r
428                                 Orientation2 = Math.PI/4;\r
429                                 SizeH = 32.0;\r
430                                 SizeV = 32.0;\r
431                         }\r
432 \r
433                         public void Update()\r
434                         {\r
435                                 this.UpdateShaderValue(InputProperty);\r
436                                 this.UpdateShaderValue(ContrastProperty);\r
437                                 this.UpdateShaderValue(FrequencyProperty);\r
438                                 this.UpdateShaderValue(PhaseProperty);\r
439                                 this.UpdateShaderValue(OrientationProperty);\r
440                                 this.UpdateShaderValue(Contrast2Property);\r
441                                 this.UpdateShaderValue(Frequency2Property);\r
442                                 this.UpdateShaderValue(Phase2Property);\r
443                                 this.UpdateShaderValue(Orientation2Property);\r
444                                 this.UpdateShaderValue(SizeHProperty);\r
445                                 this.UpdateShaderValue(SizeVProperty);\r
446                         }\r
447 \r
448 \r
449                         private double size__, wavelength__, wavelength2__;\r
450                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
451                         private void setFrequency()\r
452                         {\r
453                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
454                                 this.SetValue(FrequencyProperty, freq);\r
455                                 double freq2 = size__ * 2.0 * Math.PI / (wavelength2__);\r
456                                 this.SetValue(Frequency2Property, freq);\r
457                         }\r
458 \r
459                         /// <summary>Amplitude of Grating</summary>\r
460                         public double Contrast\r
461                         {\r
462                                 get\r
463                                 {\r
464                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
465                                 }\r
466                                 set\r
467                                 {\r
468                                         this.SetValue(ContrastProperty, value / 2.0);\r
469                                 }\r
470                         }\r
471                         /// <summary>Phase of Grating</summary>\r
472                         public double WaveLength\r
473                         {\r
474                                 get\r
475                                 {\r
476                                         return wavelength__;\r
477                                 }\r
478                                 set\r
479                                 {\r
480                                         wavelength__ = value;\r
481                                         setFrequency();\r
482                                 }\r
483                         }\r
484                         /// <summary>Phase of Grating</summary>\r
485                         public double Phase\r
486                         {\r
487                                 get\r
488                                 {\r
489                                         return ((double)(this.GetValue(PhaseProperty)));\r
490                                 }\r
491                                 set\r
492                                 {\r
493                                         this.SetValue(PhaseProperty, value);\r
494                                 }\r
495                         }\r
496                         /// <summary>Orientation of Grating</summary>\r
497                         public double Orientation\r
498                         {\r
499                                 get\r
500                                 {\r
501                                         return ((double)(this.GetValue(OrientationProperty)));\r
502                                 }\r
503                                 set\r
504                                 {\r
505                                         this.SetValue(OrientationProperty, value);\r
506                                 }\r
507                         }\r
508                         /// <summary>Amplitude of Grating</summary>\r
509                         public double Contrast2\r
510                         {\r
511                                 get\r
512                                 {\r
513                                         return ((double)(this.GetValue(Contrast2Property))) * 2.0;\r
514                                 }\r
515                                 set\r
516                                 {\r
517                                         this.SetValue(Contrast2Property, value / 2.0);\r
518                                 }\r
519                         }\r
520                         /// <summary>Phase of Grating</summary>\r
521                         public double WaveLength2\r
522                         {\r
523                                 get\r
524                                 {\r
525                                         return wavelength2__;\r
526                                 }\r
527                                 set\r
528                                 {\r
529                                         wavelength2__ = value;\r
530                                         setFrequency();\r
531                                 }\r
532                         }\r
533                         /// <summary>Phase2 of Grating</summary>\r
534                         public double Phase2\r
535                         {\r
536                                 get\r
537                                 {\r
538                                         return ((double)(this.GetValue(Phase2Property)));\r
539                                 }\r
540                                 set\r
541                                 {\r
542                                         this.SetValue(Phase2Property, value);\r
543                                 }\r
544                         }\r
545                         /// <summary>Orientation2 of Grating</summary>\r
546                         public double Orientation2\r
547                         {\r
548                                 get\r
549                                 {\r
550                                         return ((double)(this.GetValue(Orientation2Property)));\r
551                                 }\r
552                                 set\r
553                                 {\r
554                                         this.SetValue(Orientation2Property, value);\r
555                                 }\r
556                         }\r
557                         /// <summary>Width of envelope</summary>\r
558                         public double SizeH\r
559                         {\r
560                                 get\r
561                                 {\r
562                                         return ((double)(this.GetValue(SizeHProperty)));\r
563                                 }\r
564                                 set\r
565                                 {\r
566                                         this.SetValue(SizeHProperty, value);\r
567                                 }\r
568                         }\r
569                         /// <summary>Height of Figure</summary>\r
570                         public double SizeV\r
571                         {\r
572                                 get\r
573                                 {\r
574                                         return ((double)(this.GetValue(SizeVProperty)));\r
575                                 }\r
576                                 set\r
577                                 {\r
578                                         this.SetValue(SizeVProperty, value);\r
579                                 }\r
580                         }\r
581                 }\r
582                 #endregion\r
583 \r
584                 #region GaborProgram\r
585                 public class GaborProgram : ShaderProgram\r
586                 {\r
587                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight5;component/Shader/Gabor.ps", UriKind.Relative);\r
588 \r
589                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GaborProgram), 0);\r
590                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
591                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
592                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
593                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
594                         public static readonly DependencyProperty SigmaProperty = DependencyProperty.Register("Sigma", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(4D)), PixelShaderConstantCallback(5)));\r
595                         public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register("Alpha", typeof(double), typeof(GaborProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(6)));\r
596                         public GaborProgram()\r
597                         {\r
598                                 PixelShader pixelShader = new PixelShader();\r
599                                 pixelShader.UriSource = ps;\r
600                                 this.PixelShader = pixelShader;\r
601 \r
602                                 this.UpdateShaderValue(InputProperty);\r
603                                 this.UpdateShaderValue(ContrastProperty);\r
604                                 this.UpdateShaderValue(FrequencyProperty);\r
605                                 this.UpdateShaderValue(PhaseProperty);\r
606                                 this.UpdateShaderValue(OrientationProperty);\r
607                                 this.UpdateShaderValue(SigmaProperty);\r
608                                 this.UpdateShaderValue(AlphaProperty);\r
609 \r
610                                 Size = 200;\r
611                                 Contrast = 1.0;\r
612                                 WaveLength = 100.0;\r
613                                 Orientation = 0.0;\r
614                                 Sigma = 4.0;\r
615                                 Alpha = 1.0;\r
616                         }\r
617 \r
618                         public void Update()\r
619                         {\r
620                                 this.UpdateShaderValue(InputProperty);\r
621                                 this.UpdateShaderValue(ContrastProperty);\r
622                                 this.UpdateShaderValue(FrequencyProperty);\r
623                                 this.UpdateShaderValue(PhaseProperty);\r
624                                 this.UpdateShaderValue(OrientationProperty);\r
625                                 this.UpdateShaderValue(SigmaProperty);\r
626                                 this.UpdateShaderValue(AlphaProperty);\r
627                         }\r
628 \r
629 \r
630                         private double size__, wavelength__;\r
631                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
632                         private void setFrequency()\r
633                         {\r
634                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
635                                 this.SetValue(FrequencyProperty, freq);\r
636                         }\r
637 \r
638                         /// <summary>Amplitude of Grating</summary>\r
639                         public double Contrast\r
640                         {\r
641                                 get\r
642                                 {\r
643                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
644                                 }\r
645                                 set\r
646                                 {\r
647                                         this.SetValue(ContrastProperty, value / 2.0);\r
648                                 }\r
649                         }\r
650                         /// <summary>Phase of Grating</summary>\r
651                         public double WaveLength\r
652                         {\r
653                                 get\r
654                                 {\r
655                                         return wavelength__;\r
656                                 }\r
657                                 set\r
658                                 {\r
659                                         wavelength__ = value;\r
660                                         setFrequency();\r
661                                 }\r
662                         }\r
663                         /// <summary>Phase of Grating</summary>\r
664                         public double Phase\r
665                         {\r
666                                 get\r
667                                 {\r
668                                         return ((double)(this.GetValue(PhaseProperty)));\r
669                                 }\r
670                                 set\r
671                                 {\r
672                                         this.SetValue(PhaseProperty, value);\r
673                                 }\r
674                         }\r
675                         /// <summary>Orientation of Grating</summary>\r
676                         public double Orientation\r
677                         {\r
678                                 get\r
679                                 {\r
680                                         return ((double)(this.GetValue(OrientationProperty)));\r
681                                 }\r
682                                 set\r
683                                 {\r
684                                         this.SetValue(OrientationProperty, value);\r
685                                 }\r
686                         }\r
687                         /// <summary>Half bandwidth of envelope</summary>\r
688                         public double Sigma\r
689                         {\r
690                                 get\r
691                                 {\r
692                                         return ((double)(this.GetValue(SigmaProperty)));\r
693                                 }\r
694                                 set\r
695                                 {\r
696                                         this.SetValue(SigmaProperty, value);\r
697                                 }\r
698                         }\r
699                         /// <summary>Transparency of Figure</summary>\r
700                         public double Alpha\r
701                         {\r
702                                 get\r
703                                 {\r
704                                         return ((double)(this.GetValue(AlphaProperty)));\r
705                                 }\r
706                                 set\r
707                                 {\r
708                                         this.SetValue(AlphaProperty, value);\r
709                                 }\r
710                         }\r
711                 }\r
712                 #endregion\r
713 \r
714                 #region GaborAlphaProgram\r
715                 public class GaborAlphaProgram : ShaderProgram\r
716                 {\r
717                         public static readonly Uri ps = new Uri(@"/PsychlopsSilverlight5;component/Shader/GaborAlpha.ps", UriKind.Relative);\r
718 \r
719                         public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GaborAlphaProgram), 0);\r
720                         public static readonly DependencyProperty ContrastProperty = DependencyProperty.Register("Contrast", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(1)));\r
721                         public static readonly DependencyProperty FrequencyProperty = DependencyProperty.Register("Frequency", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(100D)), PixelShaderConstantCallback(2)));\r
722                         public static readonly DependencyProperty PhaseProperty = DependencyProperty.Register("Phase", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(3)));\r
723                         public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(0D)), PixelShaderConstantCallback(4)));\r
724                         public static readonly DependencyProperty SigmaProperty = DependencyProperty.Register("Sigma", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(4D)), PixelShaderConstantCallback(5)));\r
725                         public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register("Alpha", typeof(double), typeof(GaborAlphaProgram), new PropertyMetadata(((double)(1D)), PixelShaderConstantCallback(6)));\r
726                         public GaborAlphaProgram()\r
727                         {\r
728                                 PixelShader pixelShader = new PixelShader();\r
729                                 pixelShader.UriSource = ps;\r
730                                 this.PixelShader = pixelShader;\r
731 \r
732                                 this.UpdateShaderValue(InputProperty);\r
733                                 this.UpdateShaderValue(ContrastProperty);\r
734                                 this.UpdateShaderValue(FrequencyProperty);\r
735                                 this.UpdateShaderValue(PhaseProperty);\r
736                                 this.UpdateShaderValue(OrientationProperty);\r
737                                 this.UpdateShaderValue(SigmaProperty);\r
738                                 this.UpdateShaderValue(AlphaProperty);\r
739 \r
740                                 Size = 200;\r
741                                 Contrast = 1.0;\r
742                                 WaveLength = 100.0;\r
743                                 Orientation = 0.0;\r
744                                 Sigma = 4.0;\r
745                                 Alpha = 1.0;\r
746                         }\r
747 \r
748                         public void Update()\r
749                         {\r
750                                 this.UpdateShaderValue(InputProperty);\r
751                                 this.UpdateShaderValue(ContrastProperty);\r
752                                 this.UpdateShaderValue(FrequencyProperty);\r
753                                 this.UpdateShaderValue(PhaseProperty);\r
754                                 this.UpdateShaderValue(OrientationProperty);\r
755                                 this.UpdateShaderValue(SigmaProperty);\r
756                                 this.UpdateShaderValue(AlphaProperty);\r
757                         }\r
758 \r
759 \r
760                         private double size__, wavelength__;\r
761                         public double Size { get { return size__; } set { size__ = value; setFrequency(); } }\r
762                         private void setFrequency()\r
763                         {\r
764                                 double freq = size__ * 2.0 * Math.PI / (wavelength__);\r
765                                 this.SetValue(FrequencyProperty, freq);\r
766                         }\r
767 \r
768                         /// <summary>Amplitude of Grating</summary>\r
769                         public double Contrast\r
770                         {\r
771                                 get\r
772                                 {\r
773                                         return ((double)(this.GetValue(ContrastProperty))) * 2.0;\r
774                                 }\r
775                                 set\r
776                                 {\r
777                                         this.SetValue(ContrastProperty, value / 2.0);\r
778                                 }\r
779                         }\r
780                         /// <summary>Phase of Grating</summary>\r
781                         public double WaveLength\r
782                         {\r
783                                 get\r
784                                 {\r
785                                         return wavelength__;\r
786                                 }\r
787                                 set\r
788                                 {\r
789                                         wavelength__ = value;\r
790                                         setFrequency();\r
791                                 }\r
792                         }\r
793                         /// <summary>Phase of Grating</summary>\r
794                         public double Phase\r
795                         {\r
796                                 get\r
797                                 {\r
798                                         return ((double)(this.GetValue(PhaseProperty)));\r
799                                 }\r
800                                 set\r
801                                 {\r
802                                         this.SetValue(PhaseProperty, value);\r
803                                 }\r
804                         }\r
805                         /// <summary>Orientation of Grating</summary>\r
806                         public double Orientation\r
807                         {\r
808                                 get\r
809                                 {\r
810                                         return ((double)(this.GetValue(OrientationProperty)));\r
811                                 }\r
812                                 set\r
813                                 {\r
814                                         this.SetValue(OrientationProperty, value);\r
815                                 }\r
816                         }\r
817                         /// <summary>Half bandwidth of envelope</summary>\r
818                         public double Sigma\r
819                         {\r
820                                 get\r
821                                 {\r
822                                         return ((double)(this.GetValue(SigmaProperty)));\r
823                                 }\r
824                                 set\r
825                                 {\r
826                                         this.SetValue(SigmaProperty, value);\r
827                                 }\r
828                         }\r
829                         /// <summary>Transparency of Figure</summary>\r
830                         public double Alpha\r
831                         {\r
832                                 get\r
833                                 {\r
834                                         return ((double)(this.GetValue(AlphaProperty)));\r
835                                 }\r
836                                 set\r
837                                 {\r
838                                         this.SetValue(AlphaProperty, value);\r
839                                 }\r
840                         }\r
841                 }\r
842                 #endregion\r
843         \r
844         }\r
845 }