Update shader load
This commit is contained in:
parent
a8961dcb4e
commit
d4680b5e1a
|
@ -37,59 +37,54 @@ class RenderPathRaytracer {
|
|||
public static function init(_path:RenderPath) {
|
||||
path = _path;
|
||||
|
||||
kha.Assets.loadBlobFromPath("pt_raygeneration.o", function(rayShader:kha.Blob) {
|
||||
kha.Assets.loadBlobFromPath("pt_closesthit.o", function(hitShader:kha.Blob) {
|
||||
kha.Assets.loadBlobFromPath("pt_miss.o", function(missShader:kha.Blob) {
|
||||
|
||||
ready = true;
|
||||
|
||||
// Command list
|
||||
commandList = new CommandList();
|
||||
for (i in 0...bufferCount) {
|
||||
framebuffers[i] = new kha.graphics5.RenderTarget(iron.App.w(), iron.App.h(), 16, false, TextureFormat.RGBA32,
|
||||
-1, -i - 1 /* hack in an index for backbuffer render targets */);
|
||||
}
|
||||
commandList.end(); // TODO: Otherwise "Reset fails because the command list was not closed"
|
||||
kha.Assets.loadBlobFromPath("raytrace.cso", function(rayTraceShader:kha.Blob) {
|
||||
ready = true;
|
||||
|
||||
// Command list
|
||||
commandList = new CommandList();
|
||||
for (i in 0...bufferCount) {
|
||||
framebuffers[i] = new kha.graphics5.RenderTarget(iron.App.w(), iron.App.h(), 16, false, TextureFormat.RGBA32,
|
||||
-1, -i - 1 /* hack in an index for backbuffer render targets */);
|
||||
}
|
||||
commandList.end(); // TODO: Otherwise "Reset fails because the command list was not closed"
|
||||
|
||||
// Pipeline
|
||||
constantBuffer = new ConstantBuffer(21 * 4);
|
||||
pipeline = new RayTracePipeline(commandList, rayShader, hitShader, missShader, constantBuffer);
|
||||
// Pipeline
|
||||
constantBuffer = new ConstantBuffer(21 * 4);
|
||||
pipeline = new RayTracePipeline(commandList, rayTraceShader, constantBuffer);
|
||||
|
||||
// Acceleration structure
|
||||
var structure = new VertexStructure();
|
||||
structure.add("pos", VertexData.Float3);
|
||||
structure.add("nor", VertexData.Float3);
|
||||
structure.add("tex", VertexData.Float2);
|
||||
var md = iron.Scene.active.meshes[0].data;
|
||||
var geom = md.geom;
|
||||
var verts = Std.int(geom.positions.length / 4);
|
||||
var vb = new VertexBuffer(verts, structure, kha.graphics5.Usage.StaticUsage);
|
||||
var vba = vb.lock();
|
||||
// iron.data.Geometry.buildVertices(vba, geom.positions, geom.normals);
|
||||
for (i in 0...verts) {
|
||||
vba[i * 8 ] = (geom.positions[i * 4 ] / 32767) * md.scalePos;
|
||||
vba[i * 8 + 1] = (geom.positions[i * 4 + 1] / 32767) * md.scalePos;
|
||||
vba[i * 8 + 2] = (geom.positions[i * 4 + 2] / 32767) * md.scalePos;
|
||||
vba[i * 8 + 3] = geom.normals [i * 2 ] / 32767;
|
||||
vba[i * 8 + 4] = geom.normals [i * 2 + 1] / 32767;
|
||||
vba[i * 8 + 5] = geom.positions[i * 4 + 3] / 32767;
|
||||
vba[i * 8 + 6] = (geom.uvs[i * 2 ] / 32767) * md.scaleTex;
|
||||
vba[i * 8 + 7] = (geom.uvs[i * 2 + 1] / 32767) * md.scaleTex;
|
||||
}
|
||||
vb.unlock();
|
||||
// Acceleration structure
|
||||
var structure = new VertexStructure();
|
||||
structure.add("pos", VertexData.Float3);
|
||||
structure.add("nor", VertexData.Float3);
|
||||
structure.add("tex", VertexData.Float2);
|
||||
var md = iron.Scene.active.meshes[0].data;
|
||||
var geom = md.geom;
|
||||
var verts = Std.int(geom.positions.length / 4);
|
||||
var vb = new VertexBuffer(verts, structure, kha.graphics5.Usage.StaticUsage);
|
||||
var vba = vb.lock();
|
||||
// iron.data.Geometry.buildVertices(vba, geom.positions, geom.normals);
|
||||
for (i in 0...verts) {
|
||||
vba[i * 8 ] = (geom.positions[i * 4 ] / 32767) * md.scalePos;
|
||||
vba[i * 8 + 1] = (geom.positions[i * 4 + 1] / 32767) * md.scalePos;
|
||||
vba[i * 8 + 2] = (geom.positions[i * 4 + 2] / 32767) * md.scalePos;
|
||||
vba[i * 8 + 3] = geom.normals [i * 2 ] / 32767;
|
||||
vba[i * 8 + 4] = geom.normals [i * 2 + 1] / 32767;
|
||||
vba[i * 8 + 5] = geom.positions[i * 4 + 3] / 32767;
|
||||
vba[i * 8 + 6] = (geom.uvs[i * 2 ] / 32767) * md.scaleTex;
|
||||
vba[i * 8 + 7] = (geom.uvs[i * 2 + 1] / 32767) * md.scaleTex;
|
||||
}
|
||||
vb.unlock();
|
||||
|
||||
var id = geom.indices[0];
|
||||
var ib = new IndexBuffer(id.length, kha.graphics5.Usage.StaticUsage);
|
||||
var iba = ib.lock();
|
||||
for (i in 0...iba.length) iba[i] = id[i];
|
||||
ib.unlock();
|
||||
var id = geom.indices[0];
|
||||
var ib = new IndexBuffer(id.length, kha.graphics5.Usage.StaticUsage);
|
||||
var iba = ib.lock();
|
||||
for (i in 0...iba.length) iba[i] = id[i];
|
||||
ib.unlock();
|
||||
|
||||
accel = new AccelerationStructure(commandList, vb, ib);
|
||||
accel = new AccelerationStructure(commandList, vb, ib);
|
||||
|
||||
// Output
|
||||
target = new RayTraceTarget(iron.App.w(), iron.App.h());
|
||||
});
|
||||
});
|
||||
// Output
|
||||
target = new RayTraceTarget(iron.App.w(), iron.App.h());
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue