anchor.diff:                                  match Map.tryFind n outputs with
                                   | Some t ->
                                       if t = v.Type then Some v
  -                                    else v |> ShaderOutputValue.withValue (converter v.Type t v.Value) |> Some
  +                                    else v |> ShaderOutputValue.withValue (converter n v.Type t v.Value) |> Some
                                   | None ->
                                       None
                               )
  
positive.code:                     let variables =
                          needed |> Map.map (fun name (lv, rv) -> 
                              let variable = Var(name + "C", rv.paramType)
                              let converter = converter lv.paramType rv.paramType
                              variable, converter
                          )
  
  
negative.code:             (typeof<V4i>, typeof<V3i>),   fun value -> <@@ (%%value : V4i).XYZ @@>
          ]
  
      let private converter (semantic : string) (inType : Type) (outType : Type) : Expr -> Expr =
          if inType <> outType then
              match typeConversions (inType, outType) with
              | Some conv -> conv
              | _ -> failwithf "[FShade] cannot convert %s value from %A to %A" semantic inType outType
          else
              id
  
  