dx9 shader / sdk sample question

Posted on 2004-08-01
Last Modified: 2013-12-26
in the DolphinVS sample that comes with directX 9 sdk, there is some setvertexshaderConstant() functions in the FrameMove function that look like this...

            Device.SetVertexShaderConstant(0, New Vector4() {vZero})
            Device.SetVertexShaderConstant(1, New Vector4() {vOne})
            Device.SetVertexShaderConstant(2, New Vector4() {vWeight})
            Device.SetVertexShaderConstant(4, New Matrix() {matTranspose})
            Device.SetVertexShaderConstant(8, New Matrix() {matCameraTranspose})
            Device.SetVertexShaderConstant(12, New Matrix() {matViewTranspose})
            Device.SetVertexShaderConstant(19, New Vector4() {fLightDolphinSpace})
            Device.SetVertexShaderConstant(20, New Vector4() {fLight})
            Device.SetVertexShaderConstant(21, fDiffuse)
            Device.SetVertexShaderConstant(22, fAmbient)
            Device.SetVertexShaderConstant(23, fFog)
            Device.SetVertexShaderConstant(24, fCaustics)
            Device.SetVertexShaderConstant(28, New Matrix() {matProjTranspose})

I dont understand why constants would have dolphinspace information, and what i would do with these lines of code if i have a second dolphin in a different position.

thanks for any input, i know its vague but im just tryin to understand how to maniuplate multiple objects using shader technology.  most books i read on shaders use directX8 and c++ and im having trouble getting the understnad.
Question by:joshmiller
LVL 17

Accepted Solution

davebytes earned 500 total points
Comment Utility
Many times, constants are used for more specific information for a given model instance in the world.  I've used this to add coloring/tinting to different players, but do it inside the shader -- or to do time-offset specific stuff, but allow models to have their own 'time clock'.

You can call the SetVertexShaderConstant calls every frame, for every object, and it won't tank performance -- you'll hit MANY other bottlenecks before it even hits the radar screen.  Just modify your code so that anything 'dolphin specific' is stored in a structure per-dolphin, then SVSC should reference the per-dolphin variable as it does setup (or pass a ptr to the dolphin struct for each setup call, making it more abstracted).

There's a ton of new books on the market dealing with DX9, and with DX9 shaders -- worth checking out amazon/borders/etc. and picking up one or two.


Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

What is RenderMan: RenderMan is a not any particular piece of software. RenderMan is an industry standard, defining set of rules that any rendering software should use, to be RenderMan-compliant. Pixar's RenderMan is a flagship implementation of …
Recently, in one of the tech-blogs I usually read, I saw a post about the best-selling video games through history. The first place in the list is for the classic, extremely addictive Tetris. Well, a long time ago, in a galaxy far far away, I was…
Sending a Secure fax is easy with eFax Corporate ( First, Just open a new email message.  In the To field, type your recipient's fax number You can even send a secure international fax — just include t…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now