private void FixGlobalVertexShader(GlobalVertexShader glvs) { throw new NotImplementedException(); /*TODO: Fix this * var usedShaders = new bool[glvs.Shaders.Count]; * for (var i = 0; i < glvs.VertexTypes.Count; i++) * { * FixDrawModeList(glvs.VertexTypes[i].DrawModes); * if (glvs.VertexTypes[i].DrawModes.Count > 18) * glvs.VertexTypes[i].DrawModes[18].ShaderIndex = -1; // Disable z_only * var type = (VertexType)i; * for (var j = 0; j < glvs.VertexTypes[i].DrawModes.Count; j++) * { * var mode = glvs.VertexTypes[i].DrawModes[j]; * if (mode.ShaderIndex < 0) * continue; * Console.WriteLine("- Recompiling vertex shader {0}...", mode.ShaderIndex); * var shader = glvs.Shaders[mode.ShaderIndex]; * var newBytecode = ShaderConverter.ConvertNewVertexShaderToOld(shader.PCShaderBytecode, j, type); * if (newBytecode != null) * shader.PCShaderBytecode = newBytecode; * usedShaders[mode.ShaderIndex] = true; * } * } * * // Null unused shaders * for (var i = 0; i < glvs.Shaders.Count; i++) * { * if (!usedShaders[i]) * glvs.Shaders[i].PCShaderBytecode = null; * }*/ }
public static void FixGlobalVertexShader(GlobalVertexShader glvs) { var usedShaders = new bool[glvs.VertexShaders.Count]; for (var i = 0; i < glvs.VertexTypes.Count; i++) { FixDrawModeList(glvs.VertexTypes[i].DrawModes); if (glvs.VertexTypes[i].DrawModes.Count > 18) { glvs.VertexTypes[i].DrawModes[18].ShaderIndex = -1; // Disable z_only } var type = (VertexType)i; for (var j = 0; j < glvs.VertexTypes[i].DrawModes.Count; j++) { var mode = glvs.VertexTypes[i].DrawModes[j]; if (mode.ShaderIndex < 0) { continue; } Console.WriteLine("- Recompiling vertex shader {0}...", mode.ShaderIndex); var shader = glvs.VertexShaders[mode.ShaderIndex]; var newBytecode = ShaderConverter.ConvertNewVertexShaderToOld(shader.Unknown2, j, type); if (newBytecode != null) { shader.Unknown2 = newBytecode; } usedShaders[mode.ShaderIndex] = true; } } // Null unused shaders for (var i = 0; i < glvs.VertexShaders.Count; i++) { if (!usedShaders[i]) { glvs.VertexShaders[i].Unknown2 = null; } } }