123456789101112131415161718192021222324252627282930313233343536373839404142 |
- ; part of the Irrlicht Engine Shader example.
- ; This Direct3D9 vertex shader will be loaded by the engine.
- ; Please note that these example shaders don't do anything really useful.
- ; They only demonstrate that shaders can be used in Irrlicht.
- vs.1.1
- dcl_position v0; ; declare position
- dcl_normal v1; ; declare normal
- dcl_color v2; ; declare color
- dcl_texcoord0 v3; ; declare texture coordinate
- ; transpose and transform position to clip space
- mul r0, v0.x, c4
- mad r0, v0.y, c5, r0
- mad r0, v0.z, c6, r0
- add oPos, c7, r0
- ; transform normal
- dp3 r1.x, v1, c0
- dp3 r1.y, v1, c1
- dp3 r1.z, v1, c2
- ; renormalize normal
- dp3 r1.w, r1, r1
- rsq r1.w, r1.w
- mul r1, r1, r1.w
- ; calculate light vector
- m4x4 r6, v0, c10 ; vertex into world position
- add r2, c8, -r6 ; vtxpos - lightpos
- ; normalize light vector
- dp3 r2.w, r2, r2
- rsq r2.w, r2.w
- mul r2, r2, r2.w
- ; calculate light color
- dp3 r3, r1, r2 ; dp3 with negative light vector
- lit r5, r3 ; clamp to zero if r3 < 0, r5 has diffuce component in r5.y
- mul oD0, r5.y, c9 ; ouput diffuse color
- mov oT0, v3 ; store texture coordinates
|