File: cg_sinewave.cg

package info (click to toggle)
vtk 5.8.0-13
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 130,524 kB
  • sloc: cpp: 1,129,256; ansic: 708,203; tcl: 48,526; python: 20,875; xml: 6,779; yacc: 4,208; perl: 3,121; java: 2,788; lex: 931; sh: 660; asm: 471; makefile: 299
file content (77 lines) | stat: -rw-r--r-- 2,636 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*********************************************************************NVMH3****
Path:  NVSDK\Common\media\programs
File:  cg_sinewave.cg

Copyright NVIDIA Corporation 2002
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.


Comments:

******************************************************************************/

struct appin
{   
    float4 Position     : POSITION;
};

struct vertout
{
    float4 HPosition    : POSITION;
    float4 Color0       : COLOR0;
    float4 Texture0     : TEXCOORD0;
};

vertout main(appin IN, 
             uniform float4x4 ModelViewProj,    // Modelview-projection matrix
             uniform float4x4 ModelView,        // Modelview matrix
             uniform float4x4 ModelViewIT,      // Inverse transpose modelview matrix
             uniform float SinTime,
             uniform float ShowNormals)
{
    vertout OUT;

    float4 pos = float4(IN.Position.x, IN.Position.y, 0.0, 0.0);
    float distance = 1/rsqrt(dot(pos, pos));

    float cosVal;
    float sinVal;
    sincos(distance * SinTime, sinVal, cosVal);

    OUT.HPosition = mul(ModelViewProj, float4(IN.Position.x, 
                                              IN.Position.y,
                                              (sinVal * 0.06),
                                              IN.Position.w));

    // Calculate vertex normal
    float4 normal;
    normal.x = (IN.Position.x / distance) * cosVal;
    normal.y = (IN.Position.y / distance) * cosVal;
    normal.z = 1.0; normal.w = 1.0;

    // transform normal from model-space to view-space
    normal = normalize(mul(ModelViewIT, normal).xyz).xyzz;

    // Output vertex color
    if (ShowNormals == 1.0)
        OUT.Color0 = normal;
    else
        OUT.Color0 = float4(1.0, 1.0, 1.0, 1.0);

    float4 eye = normalize(mul(ModelView, IN.Position));
    
    // Compute reflection vector for look up into cube map
    float4 texCoord = eye - 2 * dot(eye, normal) * normal;
    OUT.Texture0 = texCoord;
    OUT.Texture0.w = 1.0;

    return OUT;
}