WFX

From wowdev
Revision as of 13:18, 20 May 2014 by Schlumpf (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

These files tell WoW which Shaders to use on different surfaces. The files are hardcoded into the client. As of 3.0.9, WoW loads:

  • MapObj.wfx
    • Particle (//Particle shaders - move to another file.)
    • MapObjDiffuse
    • MapObjOpaque
    • MapObjSpecular
    • MapObjMetal
    • MapObjEnv
    • MapObjEnvMetal
  • MapObjU.wfx
    • MapObjUDiffuse
    • MapObjUOpaque
    • MapObjUSpecular
    • MapObjUMetal
    • MapObjUEnv
    • MapObjUEnvMetal
  • Model2.wfx
    • Projected_ModMod
    • Projected_ModAdd
  • ShadowMap.wfx
    • ShadowMapRender
    • ShadowMapRenderSL

Bold characters are needed for parsing the file right. Non-bold functions are optional.

The shaders referenced in the RenderState*()s are references to the BLS files.

Effect(name, unk)	// this name is referenced from the app (hardcoded)
{
	FixedFunc()
	{
		Pass(type, passCount)                     // <=1 asserted
		{
			ColorOp0(mode);
			ColorOp1(mode);
			AlphaOp0(mode);
			AlphaOp1(mode);
			RenderStateARGB(shader, color, color); // see list below
			RenderStateF(shader, float, float); // float
			RenderStateI(shader, integer, integer); // see list below
		}
	}
	Shader()
	{
		Pass(type, passCount)                    // ==1 asserted
		{
			VertexShader(mode);
			PixelShader(mode);
			Specular(mode);
			RenderStateARGB(shader, color, color); // see list below
			RenderStateF(shader, float, float); // float
			RenderStateI(shader, integer, integer); // see list below
		}
	}
}

Pass: type

  • Default
  • Opaque
  • AlphaKey
  • Alpha
  • Add
  • Mod
  • Mod2x
  • ModAdd
  • InvSrcAlphaAdd
  • InvSrcAlphaOpaque
  • SrcAlphaOpaque
  • NoAlphaAdd
  • ConstantAlpha

*****Op*: mode

  • Mod
  • Mod2x
  • Add
  • PassThru
  • Decal
  • Fade

RenderStateARGB: color

  • white
  • black
  • every value getting a good result with strtoul(string, 0, 0x10)

RenderStateI: integer

  • true
  • false
  • TexGen_Disable
  • TexGen_Object
  • TexGen_World
  • TexGen_View
  • TexGen_ViewReflection
  • TexGen_ViewNormal
  • TexGen_SphereMap
  • TS_PassThru
  • TS_Affine
  • TS_Proj

RenderState: type

  • MatDiffuse
  • MatEmissive
  • MatSpecular
  • MatSpecularExp
  • NormalizeNormals
  • SceneAmbient
  • DepthTest
  • DepthFunc
  • DepthWrite
  • ColorWrite
  • Culling
  • ClipPlaneMask
  • Lighting
  • TexLodBiasZ // Z=0-7
  • TexGenZ // Z=0-7
  • TextureShaderZ // Z=0-7
  • PointScale
  • PointScaleAttenuation
  • PointScaleMin
  • PointScaleMax
  • PointSprite
  • ConstBlendAlpha
  • Unknown