fixed vertex_program_parse

This commit is contained in:
Botanic 2013-02-07 13:00:51 -08:00
parent cd9f2aa238
commit 6f72f2fb3e

View file

@ -258,21 +258,21 @@ bool CVPParser::parseInputRegister(CVPOperand &operand, std::string &errorOutput
}
switch (strValue)
{
case "OPOS": operand.Value.InputRegisterValue = CVPOperand::IPosition; break;
case "WGHT": operand.Value.InputRegisterValue = CVPOperand::IWeight; break;
case "NRML": operand.Value.InputRegisterValue = CVPOperand::INormal; break;
case "COL0": operand.Value.InputRegisterValue = CVPOperand::IPrimaryColor; break;
case "COL1": operand.Value.InputRegisterValue = CVPOperand::ISecondaryColor; break;
case "FOGC": operand.Value.InputRegisterValue = CVPOperand::IFogCoord; break;
case 'OPOS': operand.Value.InputRegisterValue = CVPOperand::IPosition; break;
case 'WGHT': operand.Value.InputRegisterValue = CVPOperand::IWeight; break;
case 'NRML': operand.Value.InputRegisterValue = CVPOperand::INormal; break;
case 'COL0': operand.Value.InputRegisterValue = CVPOperand::IPrimaryColor; break;
case 'COL1': operand.Value.InputRegisterValue = CVPOperand::ISecondaryColor; break;
case 'FOGC': operand.Value.InputRegisterValue = CVPOperand::IFogCoord; break;
// texture argument
case "TEX0":
case "TEX1":
case "TEX2":
case "TEX3":
case "TEX4":
case "TEX5":
case "TEX6":
case "TEX7":
case 'TEX0':
case 'TEX1':
case 'TEX2':
case 'TEX3':
case 'TEX4':
case 'TEX5':
case 'TEX6':
case 'TEX7':
operand.Value.InputRegisterValue = (CVPOperand::EInputRegister) (((CVPOperand::ITex0 + strValue) & 0xff) - '0');
break;
default:
@ -386,21 +386,21 @@ bool CVPParser::parseOutputRegister(CVPOperand &operand, std::string &errorOutpu
// convert to enum
switch(strValue)
{
case "HPOS": operand.Value.OutputRegisterValue = CVPOperand::OHPosition; break;
case "COL0": operand.Value.OutputRegisterValue = CVPOperand::OPrimaryColor; break;
case "COL1": operand.Value.OutputRegisterValue = CVPOperand::OSecondaryColor; break;
case "BFC0": operand.Value.OutputRegisterValue = CVPOperand::OBackFacePrimaryColor; break;
case "BFC1": operand.Value.OutputRegisterValue = CVPOperand::OBackFaceSecondaryColor; break;
case "FOGC": operand.Value.OutputRegisterValue = CVPOperand::OFogCoord; break;
case "PSIZ": operand.Value.OutputRegisterValue = CVPOperand::OPointSize; break;
case "TEX0": operand.Value.OutputRegisterValue = CVPOperand::OTex0; break;
case "TEX1": operand.Value.OutputRegisterValue = CVPOperand::OTex1; break;
case "TEX2": operand.Value.OutputRegisterValue = CVPOperand::OTex2; break;
case "TEX3": operand.Value.OutputRegisterValue = CVPOperand::OTex3; break;
case "TEX4": operand.Value.OutputRegisterValue = CVPOperand::OTex4; break;
case "TEX5": operand.Value.OutputRegisterValue = CVPOperand::OTex5; break;
case "TEX6": operand.Value.OutputRegisterValue = CVPOperand::OTex6; break;
case "TEX7": operand.Value.OutputRegisterValue = CVPOperand::OTex7; break;
case 'HPOS': operand.Value.OutputRegisterValue = CVPOperand::OHPosition; break;
case 'COL0': operand.Value.OutputRegisterValue = CVPOperand::OPrimaryColor; break;
case 'COL1': operand.Value.OutputRegisterValue = CVPOperand::OSecondaryColor; break;
case 'BFC0': operand.Value.OutputRegisterValue = CVPOperand::OBackFacePrimaryColor; break;
case 'BFC1': operand.Value.OutputRegisterValue = CVPOperand::OBackFaceSecondaryColor; break;
case 'FOGC': operand.Value.OutputRegisterValue = CVPOperand::OFogCoord; break;
case 'PSIZ': operand.Value.OutputRegisterValue = CVPOperand::OPointSize; break;
case 'TEX0': operand.Value.OutputRegisterValue = CVPOperand::OTex0; break;
case 'TEX1': operand.Value.OutputRegisterValue = CVPOperand::OTex1; break;
case 'TEX2': operand.Value.OutputRegisterValue = CVPOperand::OTex2; break;
case 'TEX3': operand.Value.OutputRegisterValue = CVPOperand::OTex3; break;
case 'TEX4': operand.Value.OutputRegisterValue = CVPOperand::OTex4; break;
case 'TEX5': operand.Value.OutputRegisterValue = CVPOperand::OTex5; break;
case 'TEX6': operand.Value.OutputRegisterValue = CVPOperand::OTex6; break;
case 'TEX7': operand.Value.OutputRegisterValue = CVPOperand::OTex7; break;
default:
errorOutput = "Can't read index for output register.";
return false;
@ -755,7 +755,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
}
switch (instrStr)
{
case "ARL ":
case 'ARL ':
instr.Opcode = CVPInstruction::ARL;
if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar())
@ -764,7 +764,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
return false;
}
break;
case "RSQ ":
case 'RSQ ':
instr.Opcode = CVPInstruction::RSQ;
if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar())
@ -773,8 +773,8 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
return false;
}
break;
case "EXP ":
case "EXPP":
case 'EXP ':
case 'EXPP':
instr.Opcode = CVPInstruction::EXPP;
if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar())
@ -789,7 +789,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
return false;
}*/
break;
case "LOG ":
case 'LOG ':
instr.Opcode = CVPInstruction::LOG;
if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar())
@ -805,7 +805,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
}
*/
break;
case "RCP ":
case 'RCP ':
instr.Opcode = CVPInstruction::RCP;
if (!parseOp2(instr, errorOutput)) return false;
if (!instr.Src1.Swizzle.isScalar())
@ -815,60 +815,60 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
}
break;
/////////////////
case "MOV ":
case 'MOV ':
instr.Opcode = CVPInstruction::MOV;
if (!parseOp2(instr, errorOutput)) return false;
break;
case "LIT ":
case 'LIT ':
instr.Opcode = CVPInstruction::LIT;
if (!parseOp2(instr, errorOutput)) return false;
break;
/////////////////
case "MAD ":
case 'MAD ':
instr.Opcode = CVPInstruction::MAD;
if (!parseOp4(instr, errorOutput)) return false;
break;
/////////////////
case "ADD ":
case 'ADD ':
instr.Opcode = CVPInstruction::ADD;
if (!parseOp3(instr, errorOutput)) return false;
break;
/////////////////
case "MUL ":
case 'MUL ':
instr.Opcode = CVPInstruction::MUL;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "DP3 ":
case 'DP3 ':
instr.Opcode = CVPInstruction::DP3;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "DP4 ":
case 'DP4 ':
instr.Opcode = CVPInstruction::DP4;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "DST ":
case 'DST ':
instr.Opcode = CVPInstruction::DST;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "MIN ":
case 'MIN ':
instr.Opcode = CVPInstruction::MIN;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "MAX ":
case 'MAX ':
instr.Opcode = CVPInstruction::MAX;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "SLT ":
case 'SLT ':
instr.Opcode = CVPInstruction::SLT;
if (!parseOp3(instr, errorOutput)) return false;
break;
case "SGE ":
case 'SGE ':
instr.Opcode = CVPInstruction::SGE;
if (!parseOp3(instr, errorOutput)) return false;
break;
/////////////////
case "END ":
case 'END ':
endEncountered = true;
return true;
break;
@ -885,7 +885,7 @@ bool CVPParser::parseInstruction(CVPInstruction &instr, std::string &errorOutput
}
// it is not allowed to write to an adress register except for ARL
if (instrStr != "ARL ")
if (instrStr != 'ARL ')
{
if (instr.Dest.Type == CVPOperand::AddressRegister)
{