<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
        {mso-style-priority:1;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=DE link=blue vlink=purple>
<div class=Section1>
<p class=MsoNoSpacing>Dear vtk community,<o:p></o:p></p>
<p class=MsoNoSpacing><o:p> </o:p></p>
<p class=MsoNoSpacing><span lang=EN-US>For my research project I want to use
the Cg shader support of VTK. I can load a VTK included XML-material file into a
vtkProperty object, which reads the shader code correctly. However, if I add
uniform shader variables, which are used within the shader code, it has no
influence for the rendering. Below I present the xml-material file (provided by
VTK), my vtk-code and the cg-shader code (provided by VTK). <o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>Does anybody know what I have done wrong
or missed?<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>Thanks in advanced and best regards,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>Rocco Gasteiger</span><o:p></o:p></p>
<p class=MsoNoSpacing><o:p> </o:p></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>--------------------------------------------------</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>Dipl.-Ing. Rocco Gasteiger</span><span lang=EN-US><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>Otto-von-Guericke University<br>
Faculty of Computer Science<br>
Department of Simulation and Graphics<br>
Universitätsplatz 2, 39106 Magdeburg, Germany<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>Office: G29-223<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>Phone: +49 391 67 127 59<br>
Fax: +49 391 67 111 64</span><span lang=EN-US
style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>Website: http://wwwisg.cs.uni-magdeburg.de/cvcms/ <o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>--------------------------------------------------</span><o:p></o:p></p>
<p class=MsoNoSpacing><o:p> </o:p></p>
<p class=MsoNoSpacing><o:p> </o:p></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>********************</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoNoSpacing>XML-Material file:<o:p></o:p></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>********************</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoNoSpacing><o:p> </o:p></p>
<p class=MsoNoSpacing><span lang=EN-US><?xml version="1.0"
encoding="UTF-8"?><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><Material
name="CgTestMaterial"><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <Property
name="Property1"><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <Member
name="DiffuseColor" number_of_elements="3"
type="Float" value="1.0 1.0 1.0" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <Member
name="Ambient" number_of_elements="3"
type="Float" value="1.0 0.0 1.0" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> </Property><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <Shader
scope="Vertex" name="CGVertexLighting"
location="Library" language="Cg"<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>
entry="main" args="-DVERTEX_PROGRAM"><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <MatrixUniform
name="ModelViewProj" type="State"
number_of_elements="2" <o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>
value="CG_GL_MODELVIEW_PROJECTION_MATRIX CG_GL_MATRIX_IDENTITY"> <o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>
</MatrixUniform><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="Ka" value="Ambient" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="AmbientColor" value="AmbientColor" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="Kd" value="Diffuse" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="DiffuseColor" value="DiffuseColor" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="Ks" value="Specular" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="Ksp" value="SpecularPower" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <PropertyUniform
name="SpecularColor" value="SpecularColor" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <LightUniform
name="lightPosition" value="Position" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <LightUniform
name="lightDiffuseColor" value="DiffuseColor" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <LightUniform
name="lightSpecularColor" value="SpecularColor" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <LightUniform
name="lightAmbientColor" value="AmbientColor" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> <CameraUniform
name="eyePosition" value="Position" /><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US> </span></Shader><o:p></o:p></p>
<p class=MsoNoSpacing></Material><o:p></o:p></p>
<p class=MsoNoSpacing><o:p> </o:p></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>********************</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US>My vtk-Code:<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>********************</span><span
lang=EN-US><o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New";color:#010001'>vtkSphereSource</span><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>* <span style='color:#010001'>sphere</span>
= <span style='color:#010001'>vtkSphereSource</span>::<span style='color:#010001'>New</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>vtkPolyDataMapper</span> *<span
style='color:#010001'>sphereMapper</span> = <span style='color:#010001'>vtkPolyDataMapper</span>::<span
style='color:#010001'>New</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>sphereMapper</span>-><span
style='color:#010001'>SetInput</span>(<span style='color:#010001'>sphere</span>-><span
style='color:#010001'>GetOutput</span>());<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>vtkActor</span> *<span
style='color:#010001'>sphereActor</span> = <span style='color:#010001'>vtkActor</span>::<span
style='color:#010001'>New</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>sphereActor</span>-><span
style='color:#010001'>SetMapper</span>(<span style='color:#010001'>sphereMapper</span>);
<span style='color:#010001'><o:p></o:p></span></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New";color:#010001'> sphereActor</span><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>-><span style='color:
#010001'>GetProperty</span>()-><span style='color:#010001'>LoadMaterial</span>(<span
style='color:#A31515'>"D:\\Bibliotheken\\VTK\\VTKSource\\Utilities\\MaterialLibrary\\Materials\\CgLighting.xml"</span>);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>sphereActor</span>-><span
style='color:#010001'>GetProperty</span>()-><span style='color:#010001'>ShadingOn</span>();
<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> // I also tried the different version of “AddShaderVariable()”
but it didn’t help.<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New";color:blue'> float</span><span lang=EN-US style='font-size:
10.0pt;font-family:"Courier New"'> <span style='color:#010001'>color</span> =
(0.0, 0.0, 0.0);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>sphereActor</span>-><span
style='color:#010001'>GetProperty</span>()-><span style='color:#010001'>AddShaderVariable</span>(<span
style='color:#A31515'>"DiffuseColor"</span>, 3, &<span
style='color:#010001'>color</span>);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> </span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>
<span style='color:#010001'>vtkRenderer</span> *<span style='color:#010001'>renderer</span>
= <span style='color:#010001'>vtkRenderer</span>::<span style='color:#010001'>New</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>
<span style='color:#010001'>vtkRenderWindow</span> *<span style='color:#010001'>renWin</span>
= <span style='color:#010001'>vtkRenderWindow</span>::<span style='color:#010001'>New</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>
</span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";
color:#010001'>renWin</span><span lang=EN-US style='font-size:10.0pt;
font-family:"Courier New"'>-><span style='color:#010001'>AddRenderer</span>(<span
style='color:#010001'>renderer</span>);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>vtkRenderWindowInteractor</span>
*<span style='color:#010001'>iren</span> = <span style='color:#010001'>vtkRenderWindowInteractor</span>::<span
style='color:#010001'>New</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>iren</span>-><span
style='color:#010001'>SetRenderWindow</span>(<span style='color:#010001'>renWin</span>);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>renderer</span>-><span
style='color:#010001'>AddActor</span>(<span style='color:#010001'>sphereActor</span>);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <span style='color:#010001'>renderer</span>-><span
style='color:#010001'>ResetCamera</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> <o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New";
color:#010001'> renWin</span><span style='font-size:10.0pt;font-family:
"Courier New"'>-><span style='color:#010001'>Render</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>
<span style='color:#010001'>iren</span>-><span style='color:#010001'>Start</span>();<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>********************<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>The Cg-Shader code:<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>******************** <o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>struct vertin<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>{<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float4 Position: POSITION;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 Normal: NORMAL;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>};<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>struct vertout<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>{<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float4 Position : POSITION;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float4 Color : COLOR;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>};<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'>vertout main(vertin IN,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float4x4 ModelViewProj,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float Ka,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 AmbientColor,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float Kd,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 DiffuseColor,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float Ks,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float Ksp,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 SpecularColor,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 lightPosition,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 eyePosition,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 lightDiffuseColor,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 lightAmbientColor,<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> uniform float3 lightSpecularColor<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>)<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>{<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>
float3 N = IN.Normal; //invert(IN.Normal);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>
</span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New"'>vertout
OUT;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> OUT.Position = mul(ModelViewProj, IN.Position);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> // Computer Ambient intensity.<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 ambient = Ka * AmbientColor * lightAmbientColor;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> // Comput Diffuse intensity.<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 L = normalize(lightPosition - IN.Position);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float diffuseLight = max(dot(N, L), 0);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 diffuse = Kd * DiffuseColor * lightDiffuseColor *
diffuseLight;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> // Compute Specular intensity.<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 V = normalize(eyePosition - IN.Position);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 H = normalize(L + V);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float specularLight = pow(max(dot(N, H), 0), Ksp);<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> if (diffuseLight <= 0) specularLight = 0;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> float3 specular = Ks * SpecularColor * lightSpecularColor
* specularLight;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> OUT.Color.xyz = ambient + diffuse + specular;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> OUT.Color.w = 1;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'><o:p> </o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US style='font-size:10.0pt;font-family:
"Courier New"'> return OUT;<o:p></o:p></span></p>
<p class=MsoNoSpacing><span style='font-size:10.0pt;font-family:"Courier New"'>}<o:p></o:p></span></p>
<p class=MsoNoSpacing><span lang=EN-US><o:p> </o:p></span></p>
</div>
</body>
</html>