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