//---------------------------------------------------------------------------- void Shader::Save (OutStream& target) const { WM5_BEGIN_DEBUG_STREAM_SAVE(target); Object::Save(target); target.WriteStringW(mNumInputs, mInputName); target.WriteEnumN(mNumInputs, mInputType); target.WriteEnumN(mNumInputs, mInputSemantic); target.WriteStringW(mNumOutputs, mOutputName); target.WriteEnumN(mNumOutputs, mOutputType); target.WriteEnumN(mNumOutputs, mOutputSemantic); target.WriteStringW(mNumConstants, mConstantName); target.WriteN(mNumConstants, mNumRegistersUsed); target.WriteStringW(mNumSamplers, mSamplerName); target.WriteEnumN(mNumSamplers, mSamplerType); target.WriteEnumN(mNumSamplers, mFilter); target.WriteEnumN(mNumSamplers, mCoordinate[0]); target.WriteEnumN(mNumSamplers, mCoordinate[1]); target.WriteEnumN(mNumSamplers, mCoordinate[2]); target.WriteN(mNumSamplers, mLodBias); target.WriteN(mNumSamplers, mAnisotropy); target.WriteAggregateN(mNumSamplers, mBorderColor); // On load, test this against MAX_PROFILES just in case a user increases // MAX_PROFILES and tries to load old data sets. target.Write((int)MAX_PROFILES); target.WriteBool(mProfileOwner); if (mProfileOwner) { for (int i = 0; i < MAX_PROFILES; ++i) { target.WriteN(mNumConstants, mBaseRegister[i]); target.WriteN(mNumSamplers, mTextureUnit[i]); target.WriteString(*mProgram[i]); } } WM5_END_DEBUG_STREAM_SAVE(Shader, target); }