Download Cg Toolkit User`s Manual

Transcript
Advanced Profile Sample Shaders
// pass
OUT.N =
OUT.T =
OUT.B =
through object-space normal, tangent, binormal.
normalize(IN.Normal.xyz);
IN.Tangent.xyz;
IN.Binormal.xyz;
// transform view pos (origin) to obj space
OUT.VPosition = mul(ModelViewI, float4(0,0,0,1)).xyz;
// transform light vector to obj space
OUT.LightVecO = mul(ModelViewI, LightVec);
return OUT;
}
Pixel Shader Source Code for MultiPaint
#define WHITE half4(1.0h,1.0h,1.0h,1.0h)
// input -- same struct
struct MultiPaintV2F {
float4 HPosition
:
float4 TexCoords
:
float3 OPosition
:
float3 Normal
:
float3 VPosition
:
float3 T
:
float3 B
:
float3 N
:
float4 LightVecO
:
};
is output from "cg_multipaintVP.cg"
POSITION;
TEXCOORD0;
TEXCOORD1;
TEXCOORD2;
TEXCOORD3;
TEXCOORD4;
TEXCOORD5;
TEXCOORD6;
TEXCOORD7;
//
//
//
//
//
//
//
//
//
position (clip space)
base ST coordinates
position (obj space)
normal (eye space)
view pos (obj space)
tangent (obj space)
binormal (obj space)
normal (obj space)
light dir (obj space)
// channels in our material map:
#define SPEC_STR x
#define METALNESS y
#define NORM_SPEC_EXPON z
// subfields in "SpecData"
#define MINPOWER x
#define MAXPOWER y
#define MAXSPEC z
// subfields in "ReflData"
#define FRESNEL_MIN x
#define FRESNEL_MAX y
808-00504-0000-004
NVIDIA
111