Jump to content
  • Advertisement
Sign in to follow this  

RenderMonkey fx file Problem

This topic is 4375 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

hi all, i tried use RenderMonkey example fx file. Below is Example fx code. //**************************************************************// // Effect File exported by RenderMonkey // // - Although many improvements were made to RenderMonkey FX // file export, there are still situations that may cause // compilation problems once the file is exported, such as // occasional naming conflicts for methods, since FX format // does not support any notions of name spaces. You need to // try to create workspaces in such a way as to minimize // potential naming conflicts on export. // // - Note that to minimize resulting name collisions in the FX // file, RenderMonkey will mangle names for passes, shaders // and function names as necessary to reduce name conflicts. //**************************************************************// //--------------------------------------------------------------// // BubbleShader_ASM //--------------------------------------------------------------// //--------------------------------------------------------------// // Front Faces //--------------------------------------------------------------// string BubbleShader_ASM_Front_Faces_Torus : ModelData = "../../../Program Files/ATI Research Inc/RenderMonkey 1.5/Examples/Media/Models/Torus.3ds"; //--------------------------------------------------------------// // Vertex Shader //--------------------------------------------------------------// VertexShader BubbleShader_ASM_Front_Faces_Vertex_Shader_ = asm { vs.1.1 dcl_position v0 dcl_normal v1 dcl_texcoord v2 dcl_tangent v3 // c0 - { 0.0, 0.5, 1.0, 2.0} // c1 - { 4.0, .5pi, pi, 2pi} // c2 - {1, -1/3!, 1/5!, -1/7!} for sin (1.0f, -1.0f/6.0f, 1.0f/120.0f, -1.0f/5040.0f) // c3 - {1/2!, -1/4!, 1/6!, -1/8!} for cos (1.0f/2.0f, -1.0f/24.0f, 1.0f/720.0f, -1.0f/40320.0f) // c4-7 - Composite World-View-Projection Matrix // c8 - Model Space Camera Position // c10 - {1.02, 0.04, 0, 0} fixup factor for Taylor series imprecision // c11 - {0.5, 0.5, 0.25, 0.25} waveHeight0, waveHeight1, waveHeight2, waveHeight3 // c12 - {0.0, 0.0, 0.0, 0.0} waveOffset0, waveOffset1, waveOffset2, waveOffset3 // c13 - {0.6, 0.7, 1.2, 1.4} waveSpeed0, waveSpeed1, waveSpeed2, waveSpeed3 // c14 - {0.0, 2.0, 0.0, 4.0} waveDirX0, waveDirX1, waveDirX2, waveDirX3 // c15 - {2.0, 0.0, 4.0, 0.0} waveDirY0, waveDirY1, waveDirY2, waveDirY3 // c16 - { time } // c17 - {-0.00015, 1.0, 0.0, 0.0} base texcoord distortion x0, y0, x1, y1 // c18 - World Martix mul r0, c14, v2.x // use tex coords as inputs to sinusoidal warp mad r0, c15, v2.y, r0 // use tex coords as inputs to sinusoidal warp mov r1, c16.x // time... mad r0, r1, c13, r0 // add scaled time to move bumps according to frequency add r0, r0, c12 frc r0.xy, r0 // take frac of all 4 components frc r1.xy, r0.zwzw mov r0.zw, r1.xyxy mul r0, r0, c10.x // multiply by fixup factor (due to inaccuracy of taylor series) sub r0, r0, c0.y // subtract .5 mul r0, r0, c1.w // mult tex coords by 2pi coords range from(-pi to pi) mul r5, r0, r0 // (wave vec)^2 mul r1, r5, r0 // (wave vec)^3 mul r6, r1, r0 // (wave vec)^4 mul r2, r6, r0 // (wave vec)^5 mul r7, r2, r0 // (wave vec)^6 mul r3, r7, r0 // (wave vec)^7 mul r8, r3, r0 // (wave vec)^8 mad r4, r1, c2.y, r0 // (wave vec) - ((wave vec)^3)/3! mad r4, r2, c2.z, r4 // + ((wave vec)^5)/5! mad r4, r3, c2.w, r4 // - ((wave vec)^7)/7! mov r0, c0.z // 1 mad r5, r5, c3.x ,r0 // -(wave vec)^2/2! mad r5, r6, c3.y, r5 // +(wave vec)^4/4! mad r5, r7, c3.z, r5 // -(wave vec)^6/6! mad r5, r8, c3.w, r5 // +(wave vec)^8/8! dp4 r0, r4, c11 // multiply wave heights by waves mul r0, r0, v1 // apply deformation in direction of normal add r0.xyz, r0, v0 // add to position mov r0.w, c0.z // homogenous component m4x4 oPos, r0, c4 // OutPos = WorldSpacePos * Composite View-Projection Matrix mov oT0, v2 // Pass along texture coordinates ;This is where the shader starts to diverge a bit from the Ocean shader. First the binormal is computed mov r3, v1 mul r4, v3.yzxw, r3.zxyw mad r4, v3.zxyw, -r3.yzxw, r4 // cross product to find binormal ;Then the normal is warped based on the tangent space basis vectors (tangent and binormal). mul r1, r5, c11 // cos * waveheight dp4 r9.x, -r1, c14 // amount of normal warping in direction of binormal dp4 r9.y, -r1, c15 // amount of normal warping in direction of tangent mul r1, r4, r9.x // normal warping in direction of binormal mad r1, v3, r9.y, r1 // normal warping in direction of tangent mad r5, r1, c10.y, v1 // warped normal move nx, ny: cos * wavedir * waveheight ;The normal is then renormalized. mov r10, r5 m3x3 r5, r10, c18 // transform normal dp3 r10.x, r5, r5 rsq r10.y, r10.x mul r5, r5, r10.y // normalize warped normal ; Next the view vector is computed: mov r10, r0 m4x4 r0, r10, c18 // transform vertex position sub r2, c8, r0 // view vector dp3 r10.x, r2, r2 rsq r10.y, r10.x mul r2, r2, r10.y // normalized view vector ; Then the dot product of the view vector and the warped normal is computed: dp3 r7, r5, r2 // N.V mov oT2, r7 // Pass along N.V ; This is used to compute the reflection vector. add r6, r7, r7 // 2N.V mad r6, r6, r5, -r2 // 2N(N.V)-V mov oT1, r6 // reflection vector }; //--------------------------------------------------------------// // Pixel Shader //--------------------------------------------------------------// PixelShader BubbleShader_ASM_Front_Faces_Pixel_Shader_ = asm { // c0 - (0.0, 0.5, 1.0, -0.75) // c1 - (0.6, 0.1, 0.0, 0.0) Alpha Scale and bias ps.1.4 texld r0, t0 texld r1, t1 texcrd r2.rgb, t2 cmp r2.r, r2.r, r2.r, -r2.r // abs(V.N) +mad_x4_sat r1.a, r1.a, r1.a, c0.a // 4 * (a^2 - .75), clamped mul_x2_sat r2.rgb, r0, r1 // base * env (may change scale factor later) +mad r2.a, 1-r2.r, c1.x, c1.y // alphascale * abs(V.N) + alphabias lrp r0.rgb, r1.a, r1, r2 // Lerp between Env and Base*Env based on glow map +add r0.a, r2.a, r1.a // Add glow map to Fresnel term for alpha }; //--------------------------------------------------------------// // Back Faces //--------------------------------------------------------------// string BubbleShader_ASM_Back_Faces_Torus : ModelData = "../../../Program Files/ATI Research Inc/RenderMonkey 1.5/Examples/Media/Models/Torus.3ds"; //--------------------------------------------------------------// // Technique Section for BubbleShader_ASM //--------------------------------------------------------------// technique BubbleShader_ASM { pass Front_Faces { ZENABLE = FALSE; SRCBLEND = SRCALPHA; DESTBLEND = INVSRCALPHA; CULLMODE = CW; ALPHABLENDENABLE = TRUE; LIGHTING = FALSE; VertexShader = (BubbleShader_ASM_Front_Faces_Vertex_Shader_); PixelShader = (BubbleShader_ASM_Front_Faces_Pixel_Shader_); } pass Back_Faces { ZENABLE = FALSE; SRCBLEND = SRCALPHA; DESTBLEND = INVSRCALPHA; CULLMODE = CCW; ALPHABLENDENABLE = TRUE; LIGHTING = FALSE; VertexShader = NULL; PixelShader = NULL; } } How to import in my dirextX programmer(c#)? for Example what value should be set in my programmer? Thanks, Brian Tsim

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!