00001 #pragma once
00002
00003 #include "shader_unreal.h"
00004 #include "texturecache.h"
00005
00006 class Shader_ComplexSurface : public Shader_Unreal
00007 {
00008 private:
00009 struct
00010 {
00011 ID3D10EffectScalarVariable* useTexturePass;
00012 ID3D10EffectShaderResourceVariable* textures;
00013 } variables;
00014 static const int numBools = TextureCache::DUMMY_NUM_TEXTURE_PASSES -1;
00015 bool enableChanged;
00016 BOOL useTexturePass[numBools];
00017
00018 public:
00019 bool compile(const D3D10_SHADER_MACRO *macros, DWORD shaderFlags);
00020 Shader_ComplexSurface(ID3D10Device *device);
00021 void switchPass(TextureCache::TexturePass pass,BOOL val) ;
00022 void apply();
00023 void Shader_ComplexSurface::setTexture(int pass,ID3D10ShaderResourceView *texture) const;
00024 };