anchor.diff:              |> List.concat
   
           {
  -            hash = effect |> hash |> string
  +            hash = effect.Id
               userData = effect
               entries = entryPoints
               tryGetOverrideCode = Shader.tryGetOverrideCode V3i.Zero
  
positive.code:           CallableShaders = s.CallableShaders |> Map.map (fun n -> mapping (ShaderSlot.Callable n))
            HitGroups       = s.HitGroups |> Map.map (fun n -> HitGroup.map n mapping) }
  
  type RaytracingEffect internal(state : RaytracingEffectState) =
  
      let shaderBindingTableLayout =
  
negative.code:             state |> RaytracingEffectState.map (prepareShader shaderBindingTableLayout.Value)
          )
  
      let id =
          lazy (
              state.Value |> RaytracingEffectState.computeHash
          )
  
      member x.Id = id.Value
  
      member x.ShaderBindingTableLayout =
          shaderBindingTableLayout.Value
  
  