public EmitContextHLSL(
SharedContextHLSL shared,
SourceRange defaultRange,
string shaderClassName )
{
_shared = shared;
_defaultRange = defaultRange;
_shaderClassName = shaderClassName;
_span = new Span();
var subSpan = NoteRange(_span, _defaultRange);
var builtinsSpan = subSpan.InsertSpan();
_typeHeaderSpan = subSpan.InsertSpan();
_resourceHeaderSpan = subSpan.InsertSpan();
_cbHeaderSpan = subSpan.InsertSpan();
_subroutineHeaderSpan = subSpan.InsertSpan();
_entryPointSpan = subSpan.InsertSpan();
builtinsSpan.WriteLine("struct Range { int lower; int upper; };");
builtinsSpan.WriteLine("Range __Range( int lower, int upper ) { Range result; result.lower=lower; result.upper=upper; return result; }");
builtinsSpan.WriteLine("float2 __GetDimensionsF( Texture2D t ) { float2 result; t.GetDimensions(result.x, result.y); return result; }");
}