@:directlyUsed@:src({
@param var instancesInfos:StorageBuffer<Int>;
@param var subMeshesInfos:StorageBuffer<Vec4>;
@const(32) var MATERIAL_COUNT:Int = 1;
@param var materialCommandStart:Array<Vec4,MATERIAL_COUNT>;
var center:Vec3;
var radius:Float;
var lodCount:Int;
var subPartsStart:Int;
var subPartsCount:Int;
function getCenter():Vec3 {
return center;
};
function getRadius():Float {
return radius;
};
function getLodCount():Int {
return lodCount;
};
function getSubPartsStart():Int {
return subPartsStart;
};
function getSubPartsCount():Int {
return subPartsCount;
};
function getMaterialCommandStart(materialIndex:Int):Int {
return int(materialCommandStart[materialIndex].x);
};
function init() {
var instanceID = invocID;
var subMeshIndex = instancesInfos[instanceID];
var boundingSphere = subMeshesInfos[subMeshIndex * 2];
var subMeshInfos = subMeshesInfos[subMeshIndex * 2 + 1];
center = boundingSphere.xyz;
radius = boundingSphere.w;
lodCount = int(subMeshInfos.x);
subPartsStart = int(subMeshInfos.y);
subPartsCount = int(subMeshInfos.z);
};
})@:build(hxsl.Macros.buildShader())@:autoBuild(hxsl.Macros.buildShader())