private void InitializeConvertersFloatToVector() { HLSLValuePair pair; // float -> float2 pair = new HLSLValuePair { From = HLSLValueBaseType.FLOAT, To = HLSLValueBaseType.FLOAT2 }; converters[pair] = new HLSLValueConverter((from, to, value) => { switch (from) { case HLSLValueSubType.X_R: return(string.Format("float2({0}, 0.0f)", value)); case HLSLValueSubType.Y_G: return(string.Format("float2(0.0f, {0})", value)); } return(string.Format("float2({0}, {0})", value)); }); // float -> float3 pair = new HLSLValuePair { From = HLSLValueBaseType.FLOAT, To = HLSLValueBaseType.FLOAT3 }; converters[pair] = new HLSLValueConverter((from, to, value) => { switch (from) { case HLSLValueSubType.X_R: return(string.Format("float3({0}, 0.0f, 0.0f)", value)); case HLSLValueSubType.Y_G: return(string.Format("float3(0.0f, {0}, 0.0f)", value)); case HLSLValueSubType.Z_B: return(string.Format("float3(0.0f, 0.0f, {0})", value)); } return(string.Format("float3({0}, {0}, {0})", value)); }); // float -> float4 pair = new HLSLValuePair { From = HLSLValueBaseType.FLOAT, To = HLSLValueBaseType.FLOAT4 }; converters[pair] = new HLSLValueConverter((from, to, value) => { switch (from) { case HLSLValueSubType.X_R: return(string.Format("float4({0}, 0.0f, 0.0f, 0.0f)", value)); case HLSLValueSubType.Y_G: return(string.Format("float4(0.0f, {0}, 0.0f, 0.0f)", value)); case HLSLValueSubType.Z_B: return(string.Format("float4(0.0f, 0.0f, {0}, 0.0f)", value)); case HLSLValueSubType.W_A: return(string.Format("float4(0.0f, 0.0f, 0.0f, {0})", value)); } return(string.Format("float4({0}, {0}, {0}, 1.0f)", value)); }); }
private void InitializeConvertersVectorToVector() { HLSLValuePair pair; // float2 -> float4 pair = new HLSLValuePair { From = HLSLValueBaseType.FLOAT2, To = HLSLValueBaseType.FLOAT4 }; converters[pair] = new HLSLValueConverter((from, to, value) => { return(string.Format("float4({0}, 0.0f, 1.0f)", value)); }); // float3 -> float4 pair = new HLSLValuePair { From = HLSLValueBaseType.FLOAT3, To = HLSLValueBaseType.FLOAT4 }; converters[pair] = new HLSLValueConverter((from, to, value) => { return(string.Format("float4({0}, 1.0f)", value)); }); // float4 -> float2, float3 -> float2 Func <HLSLValueSubType, HLSLValueSubType, object, string> func = (from, to, value) => { return(string.Format("float2({0}.xy)", value)); }; converters[new HLSLValuePair { From = HLSLValueBaseType.FLOAT3, To = HLSLValueBaseType.FLOAT2 }] = new HLSLValueConverter(func); converters[new HLSLValuePair { From = HLSLValueBaseType.FLOAT4, To = HLSLValueBaseType.FLOAT2 }] = new HLSLValueConverter(func); // float4 -> float3 pair = new HLSLValuePair { From = HLSLValueBaseType.FLOAT4, To = HLSLValueBaseType.FLOAT3 }; converters[pair] = new HLSLValueConverter((from, to, value) => { return(string.Format("float3({0}.xyz)", value)); }); }