130 TextureAttributes[pass_index][stage_index] = 0;
131 MapChannel[pass_index][stage_index] = 0;
138 PassCount(that.PassCount)
146 TextureAttributes[pass_index][stage_index] = 0;
147 MapChannel[pass_index][stage_index] = 0;
151 for (
int pass=0;pass<PassCount;++pass) {
153 TextureNames[pass][stage]=that.TextureNames[pass][stage];
171 for (
int pass=0; pass<PassCount; pass++) {
173 if (MapChannel[pass][stage] == i) {
188 Save_Variables(csave);
192 for (
int pass_index=0; pass_index<PassCount; pass_index++) {
193 for (
int stage_index=0; stage_index<2; stage_index++) {
196 if (!TextureNames[pass_index][stage_index].Is_Empty()) {
209 if (!MapperArgs[pass_index][stage_index].Is_Empty()) {
233 Load_Variables(cload);
278 for (
int pass_index=0; pass_index<PassCount; pass_index++) {
284 for (
int stage_index=0; stage_index<2; stage_index++) {
287 if (TextureAttributes[pass_index][stage_index] != 0) {
292 if (MapChannel[pass_index][stage_index] != 0) {
318 cload.
Read(&Shaders[pass],
sizeof(Shaders[pass]));
326 cload.
Read(&Materials[pass],
sizeof(Materials[pass]));
340 cload.
Read(&TextureAttributes[pass][stage],
sizeof(TextureAttributes[pass][stage]));
354 cload.
Read(&MapChannel[pass][stage],
sizeof(MapChannel[pass][stage]));
404 char * map0_args =
NULL;
405 char * map1_args =
NULL;
406 if (!
Definition->Get_Mapper_Args(pass,0).Is_Empty()) {
407 map0_args =
Definition->Get_Mapper_Args(pass,0).Peek_Buffer();
409 if (!
Definition->Get_Mapper_Args(pass,1).Is_Empty()) {
410 map1_args =
Definition->Get_Mapper_Args(pass,1).Peek_Buffer();
485 SNAPSHOT_SAY((
"Shd6LegacyW3DClass::Apply_Shared(pass: %d)\n",pass));
496 SNAPSHOT_SAY((
"Shd6LegacyW3DClass::Apply_Instance(pass: %d)\n",cur_pass));
500 SNAPSHOT_SAY((
"legacyshader:DX8Wrapper::Set_Shader(%s)\n",
Shaders[cur_pass].Get_Description(str)));
509 SNAPSHOT_SAY((
"legacyshader:DX8Wrapper::Set_Texture(%d,%s)\n",stage,
Textures[cur_pass][stage] ?
Textures[cur_pass][stage]->Get_Full_Path() :
"NULL"));
530 unsigned vertex_count
539 if ((
FVF&D3DFVF_TEX1) == D3DFVF_TEX1) {
542 if ((
FVF&D3DFVF_TEX2) == D3DFVF_TEX2) {
545 if ((
FVF&D3DFVF_TEX3) == D3DFVF_TEX3) {
548 if ((
FVF&D3DFVF_TEX4) == D3DFVF_TEX4) {
551 if ((
FVF&D3DFVF_TEX5) == D3DFVF_TEX5) {
554 if ((
FVF&D3DFVF_TEX6) == D3DFVF_TEX6) {
557 if ((
FVF&D3DFVF_TEX7) == D3DFVF_TEX7) {
560 if ((
FVF&D3DFVF_TEX8) == D3DFVF_TEX8) {
564 unsigned char* vb=(
unsigned char*)dest_buffer;
566 for (
unsigned i=0; i<vertex_count; ++i)
568 if ((
FVF&D3DFVF_XYZ)==D3DFVF_XYZ) {
579 if ((
FVF&D3DFVF_DIFFUSE)==D3DFVF_DIFFUSE) {
590 if ((
FVF&D3DFVF_NORMAL)==D3DFVF_NORMAL) {
602 for (
int j=0; j<uvcount; j++) {
#define WRITE_MICRO_CHUNK(csave, id, var)
#define READ_MICRO_CHUNK(cload, id, var)
#define WRITE_WWSTRING_CHUNK(csave, id, var)
uint32 Cur_Chunk_Length()
uint32 Cur_Micro_Chunk_ID()
uint32 Read(void *buf, uint32 nbytes)
bool Begin_Chunk(uint32 id)
static void Set_Texture(unsigned stage, TextureBaseClass *texture)
static void Set_DX8_Texture_Stage_State(unsigned stage, D3DTEXTURESTAGESTATETYPE state, unsigned value)
static void Set_Vertex_Shader(DWORD vertex_shader)
static void Set_Material(const VertexMaterialClass *material)
static void Set_Shader(const ShaderClass &shader)
unsigned Get_Tex_Offset(unsigned int n) const
unsigned Get_FVF_Size() const
unsigned Get_Diffuse_Offset() const
unsigned Get_Location_Offset() const
unsigned Get_Normal_Offset() const
unsigned int Get_Bits(void) const
virtual ~Shd6LegacyW3DClass()
virtual void Copy_Vertex_Stream(unsigned stream, void *dest_buffer, const VertexStreamStruct &vss, unsigned vertex_count)
virtual void Apply_Instance(int cur_pass, RenderInfoClass &rinfo)
Apply per instance states for 1 pass DX6.
Shd6LegacyW3DClass(const ShdDefClass *def)
virtual bool Greater_Than(const ShdInterfaceClass &s, int pass) const
VertexMaterialClass * Materials[MeshMatDescClass::MAX_PASSES]
virtual unsigned Get_Vertex_Stream_Count() const
ShaderClass Shaders[MeshMatDescClass::MAX_PASSES]
virtual void Apply_Shared(int cur_pass, RenderInfoClass &rinfo)
TextureClass * Textures[MeshMatDescClass::MAX_PASSES][MeshMatDescClass::MAX_TEX_STAGES]
virtual unsigned Get_Vertex_Size(unsigned stream) const
ShdDefClass(uint32 class_id)
virtual bool Load(ChunkLoadClass &cload)
Load this ShdDef from a chunk loader.
virtual bool Save(ChunkSaveClass &csave)
Serialize this ShdDef into a chunk saver.
ShdInterfaceClass(const ShdDefClass *def, int class_id)
Constructor.
WWINLINE int Get_Class_ID() const
const ShdDefClass * Definition
virtual bool Uses_UV_Channel(int i) const
virtual bool Load(ChunkLoadClass &cload)
Load this ShdDef from a chunk loader.
virtual bool Save(ChunkSaveClass &csave)
Serialize this ShdDef into a chunk saver.
virtual ShdInterfaceClass * Create() const
virtual bool Is_Valid_Config(StringClass &message)
virtual ~ShdLegacyW3DDefClass()
void Set_Lighting(bool lighting)
void Parse_W3dVertexMaterialStruct(const W3dVertexMaterialStruct &vmat)
void Parse_Mapping_Args(const W3dVertexMaterialStruct &vmat, char *mapping0_arg_buffer, char *mapping1_arg_buffer)
void Set_UV_Source(int stage, int array_index)
static void Convert_Shader(const W3dShaderStruct &shader, ShaderClass *set)
virtual TextureClass * Get_Texture(const char *filename, MipCountType mip_level_count=MIP_LEVELS_ALL, WW3DFormat texture_format=WW3D_FORMAT_UNKNOWN, bool allow_compression=true, TextureBaseClass::TexAssetType type=TextureBaseClass::TEX_REGULAR, bool allow_reduction=true)
static WW3DAssetManager * Get_Instance(void)
#define REF_PTR_RELEASE(x)
#define REF_PTR_SET(dst, src)
@ SHDDEF_CLASSID_LEGACYW3D
#define REGISTER_SHDDEF(T, ID, NAME)
@ SHDLEGACY_CHUNKID_TEXTURE_NAME31
@ SHDLEGACY_CHUNKID_MAPPERARGS21
@ VARID_TEXTURE_ATTRIBUTES21
@ VARID_TEXTURE_ATTRIBUTES10
@ VARID_TEXTURE_ATTRIBUTES20
@ SHDLEGACY_CHUNKID_MAPPERARGS31
@ VARID_TEXTURE_ATTRIBUTES30
@ SHDLEGACY_CHUNKID_MAPPERARGS30
@ SHDLEGACY_CHUNKID_TEXTURE_NAME30
@ SHDLEGACY_CHUNKID_MAPPERARGS10
@ SHDLEGACY_CHUNKID_MAPPERARGS01
@ VARID_TEXTURE_ATTRIBUTES31
@ VARID_TEXTURE_ATTRIBUTES00
@ SHDLEGACY_CHUNKID_TEXTURE_NAME20
@ SHDLEGACY_CHUNKID_TEXTURE_NAME00
@ SHDLEGACY_CHUNKID_TEXTURE_NAME10
@ VARID_TEXTURE_ATTRIBUTES11
@ VARID_TEXTURE_ATTRIBUTES01
@ SHDLEGACY_CHUNKID_VARIABLES
@ SHDLEGACY_CHUNKID_TEXTURE_NAME11
@ SHDLEGACY_CHUNKID_MAPPERARGS11
@ SHDLEGACY_CHUNKID_MAPPERARGS00
@ SHDLEGACY_CHUNKID_MAPPERARGS20
@ SHDLEGACY_CHUNKID_TEXTURE_NAME01
@ SHDLEGACY_CHUNKID_TEXTURE_NAME21
const Vector2 * UV[MAX_TEXTURE_STAGES]
const unsigned * DiffuseInt
const Vector3 * Locations
#define DECLARE_FORCE_LINK(module)