|
@@ -13,94 +13,94 @@ class RenderPathPaint {
|
|
static mergedObjectVisible = false;
|
|
static mergedObjectVisible = false;
|
|
static savedFov = 0.0;
|
|
static savedFov = 0.0;
|
|
static baking = false;
|
|
static baking = false;
|
|
- static _texpaint: RenderTargetRaw;
|
|
|
|
- static _texpaint_nor: RenderTargetRaw;
|
|
|
|
- static _texpaint_pack: RenderTargetRaw;
|
|
|
|
- static _texpaint_undo: RenderTargetRaw;
|
|
|
|
- static _texpaint_nor_undo: RenderTargetRaw;
|
|
|
|
- static _texpaint_pack_undo: RenderTargetRaw;
|
|
|
|
|
|
+ static _texpaint: render_target_t;
|
|
|
|
+ static _texpaint_nor: render_target_t;
|
|
|
|
+ static _texpaint_pack: render_target_t;
|
|
|
|
+ static _texpaint_undo: render_target_t;
|
|
|
|
+ static _texpaint_nor_undo: render_target_t;
|
|
|
|
+ static _texpaint_pack_undo: render_target_t;
|
|
static lastX = -1.0;
|
|
static lastX = -1.0;
|
|
static lastY = -1.0;
|
|
static lastY = -1.0;
|
|
|
|
|
|
static init = () => {
|
|
static init = () => {
|
|
|
|
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_blend0";
|
|
t.name = "texpaint_blend0";
|
|
t.width = Config.getTextureResX();
|
|
t.width = Config.getTextureResX();
|
|
t.height = Config.getTextureResY();
|
|
t.height = Config.getTextureResY();
|
|
t.format = "R8";
|
|
t.format = "R8";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_blend1";
|
|
t.name = "texpaint_blend1";
|
|
t.width = Config.getTextureResX();
|
|
t.width = Config.getTextureResX();
|
|
t.height = Config.getTextureResY();
|
|
t.height = Config.getTextureResY();
|
|
t.format = "R8";
|
|
t.format = "R8";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_colorid";
|
|
t.name = "texpaint_colorid";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA32";
|
|
t.format = "RGBA32";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_picker";
|
|
t.name = "texpaint_picker";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA32";
|
|
t.format = "RGBA32";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_nor_picker";
|
|
t.name = "texpaint_nor_picker";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA32";
|
|
t.format = "RGBA32";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_pack_picker";
|
|
t.name = "texpaint_pack_picker";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA32";
|
|
t.format = "RGBA32";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_uv_picker";
|
|
t.name = "texpaint_uv_picker";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA32";
|
|
t.format = "RGBA32";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_posnortex_picker0";
|
|
t.name = "texpaint_posnortex_picker0";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA128";
|
|
t.format = "RGBA128";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
{
|
|
{
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_posnortex_picker1";
|
|
t.name = "texpaint_posnortex_picker1";
|
|
t.width = 1;
|
|
t.width = 1;
|
|
t.height = 1;
|
|
t.height = 1;
|
|
t.format = "RGBA128";
|
|
t.format = "RGBA128";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
|
|
|
|
- RenderPath.loadShader("shader_datas/copy_mrt3_pass/copy_mrt3_pass");
|
|
|
|
- RenderPath.loadShader("shader_datas/copy_mrt3_pass/copy_mrt3RGBA64_pass");
|
|
|
|
|
|
+ render_path_load_shader("shader_datas/copy_mrt3_pass/copy_mrt3_pass");
|
|
|
|
+ render_path_load_shader("shader_datas/copy_mrt3_pass/copy_mrt3RGBA64_pass");
|
|
///if is_paint
|
|
///if is_paint
|
|
- RenderPath.loadShader("shader_datas/dilate_pass/dilate_pass");
|
|
|
|
|
|
+ render_path_load_shader("shader_datas/dilate_pass/dilate_pass");
|
|
///end
|
|
///end
|
|
}
|
|
}
|
|
|
|
|
|
@@ -114,47 +114,47 @@ class RenderPathPaint {
|
|
let particlePhysics = false;
|
|
let particlePhysics = false;
|
|
///end
|
|
///end
|
|
if (Context.raw.tool == WorkspaceTool.ToolParticle && !particlePhysics) {
|
|
if (Context.raw.tool == WorkspaceTool.ToolParticle && !particlePhysics) {
|
|
- RenderPath.setTarget("texparticle");
|
|
|
|
- RenderPath.clearTarget(0x00000000);
|
|
|
|
- RenderPath.bindTarget("_main", "gbufferD");
|
|
|
|
|
|
+ render_path_set_target("texparticle");
|
|
|
|
+ render_path_clear_target(0x00000000);
|
|
|
|
+ render_path_bind_target("_main", "gbufferD");
|
|
if ((Context.raw.xray || Config.raw.brush_angle_reject) && Config.raw.brush_3d) {
|
|
if ((Context.raw.xray || Config.raw.brush_angle_reject) && Config.raw.brush_3d) {
|
|
- RenderPath.bindTarget("gbuffer0", "gbuffer0");
|
|
|
|
|
|
+ render_path_bind_target("gbuffer0", "gbuffer0");
|
|
}
|
|
}
|
|
|
|
|
|
- let mo: TMeshObject = Scene.getChild(".ParticleEmitter").ext;
|
|
|
|
|
|
+ let mo: TMeshObject = scene_get_child(".ParticleEmitter").ext;
|
|
mo.base.visible = true;
|
|
mo.base.visible = true;
|
|
- MeshObject.render(mo, RenderPath.currentG, "mesh", RenderPath.bindParams);
|
|
|
|
|
|
+ MeshObject.render(mo,_render_path_current_g, "mesh",render_path_bind_params);
|
|
mo.base.visible = false;
|
|
mo.base.visible = false;
|
|
|
|
|
|
- mo = Scene.getChild(".Particle").ext;
|
|
|
|
|
|
+ mo = scene_get_child(".Particle").ext;
|
|
mo.base.visible = true;
|
|
mo.base.visible = true;
|
|
- MeshObject.render(mo, RenderPath.currentG, "mesh", RenderPath.bindParams);
|
|
|
|
|
|
+ MeshObject.render(mo,_render_path_current_g, "mesh",render_path_bind_params);
|
|
mo.base.visible = false;
|
|
mo.base.visible = false;
|
|
- RenderPath.end();
|
|
|
|
|
|
+ render_path_end();
|
|
}
|
|
}
|
|
|
|
|
|
///if is_paint
|
|
///if is_paint
|
|
if (Context.raw.tool == WorkspaceTool.ToolColorId) {
|
|
if (Context.raw.tool == WorkspaceTool.ToolColorId) {
|
|
- RenderPath.setTarget("texpaint_colorid");
|
|
|
|
- RenderPath.clearTarget(0xff000000);
|
|
|
|
- RenderPath.bindTarget("gbuffer2", "gbuffer2");
|
|
|
|
- RenderPath.drawMeshes("paint");
|
|
|
|
|
|
+ render_path_set_target("texpaint_colorid");
|
|
|
|
+ render_path_clear_target(0xff000000);
|
|
|
|
+ render_path_bind_target("gbuffer2", "gbuffer2");
|
|
|
|
+ render_path_draw_meshes("paint");
|
|
UIHeader.headerHandle.redraws = 2;
|
|
UIHeader.headerHandle.redraws = 2;
|
|
}
|
|
}
|
|
else if (Context.raw.tool == WorkspaceTool.ToolPicker || Context.raw.tool == WorkspaceTool.ToolMaterial) {
|
|
else if (Context.raw.tool == WorkspaceTool.ToolPicker || Context.raw.tool == WorkspaceTool.ToolMaterial) {
|
|
if (Context.raw.pickPosNorTex) {
|
|
if (Context.raw.pickPosNorTex) {
|
|
if (Context.raw.paint2d) {
|
|
if (Context.raw.paint2d) {
|
|
- RenderPath.setTarget("gbuffer0", ["gbuffer1", "gbuffer2"]);
|
|
|
|
- RenderPath.drawMeshes("mesh");
|
|
|
|
|
|
+ render_path_set_target("gbuffer0", ["gbuffer1", "gbuffer2"]);
|
|
|
|
+ render_path_draw_meshes("mesh");
|
|
}
|
|
}
|
|
- RenderPath.setTarget("texpaint_posnortex_picker0", ["texpaint_posnortex_picker1"]);
|
|
|
|
- RenderPath.bindTarget("gbuffer2", "gbuffer2");
|
|
|
|
- RenderPath.bindTarget("_main", "gbufferD");
|
|
|
|
- RenderPath.drawMeshes("paint");
|
|
|
|
- let texpaint_posnortex_picker0 = RenderPath.renderTargets.get("texpaint_posnortex_picker0").image;
|
|
|
|
- let texpaint_posnortex_picker1 = RenderPath.renderTargets.get("texpaint_posnortex_picker1").image;
|
|
|
|
- let a = new DataView(Image.getPixels(texpaint_posnortex_picker0));
|
|
|
|
- let b = new DataView(Image.getPixels(texpaint_posnortex_picker1));
|
|
|
|
|
|
+ render_path_set_target("texpaint_posnortex_picker0", ["texpaint_posnortex_picker1"]);
|
|
|
|
+ render_path_bind_target("gbuffer2", "gbuffer2");
|
|
|
|
+ render_path_bind_target("_main", "gbufferD");
|
|
|
|
+ render_path_draw_meshes("paint");
|
|
|
|
+ let texpaint_posnortex_picker0 = render_path_render_targets.get("texpaint_posnortex_picker0").image;
|
|
|
|
+ let texpaint_posnortex_picker1 = render_path_render_targets.get("texpaint_posnortex_picker1").image;
|
|
|
|
+ let a = new DataView(image_get_pixels(texpaint_posnortex_picker0));
|
|
|
|
+ let b = new DataView(image_get_pixels(texpaint_posnortex_picker1));
|
|
Context.raw.posXPicked = a.getFloat32(0, true);
|
|
Context.raw.posXPicked = a.getFloat32(0, true);
|
|
Context.raw.posYPicked = a.getFloat32(4, true);
|
|
Context.raw.posYPicked = a.getFloat32(4, true);
|
|
Context.raw.posZPicked = a.getFloat32(8, true);
|
|
Context.raw.posZPicked = a.getFloat32(8, true);
|
|
@@ -165,27 +165,27 @@ class RenderPathPaint {
|
|
Context.raw.uvyPicked = b.getFloat32(12, true);
|
|
Context.raw.uvyPicked = b.getFloat32(12, true);
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- RenderPath.setTarget("texpaint_picker", ["texpaint_nor_picker", "texpaint_pack_picker", "texpaint_uv_picker"]);
|
|
|
|
- RenderPath.bindTarget("gbuffer2", "gbuffer2");
|
|
|
|
|
|
+ render_path_set_target("texpaint_picker", ["texpaint_nor_picker", "texpaint_pack_picker", "texpaint_uv_picker"]);
|
|
|
|
+ render_path_bind_target("gbuffer2", "gbuffer2");
|
|
tid = Context.raw.layer.id;
|
|
tid = Context.raw.layer.id;
|
|
let useLiveLayer = Context.raw.tool == WorkspaceTool.ToolMaterial;
|
|
let useLiveLayer = Context.raw.tool == WorkspaceTool.ToolMaterial;
|
|
if (useLiveLayer) RenderPathPaint.useLiveLayer(true);
|
|
if (useLiveLayer) RenderPathPaint.useLiveLayer(true);
|
|
- RenderPath.bindTarget("texpaint" + tid, "texpaint");
|
|
|
|
- RenderPath.bindTarget("texpaint_nor" + tid, "texpaint_nor");
|
|
|
|
- RenderPath.bindTarget("texpaint_pack" + tid, "texpaint_pack");
|
|
|
|
- RenderPath.drawMeshes("paint");
|
|
|
|
|
|
+ render_path_bind_target("texpaint" + tid, "texpaint");
|
|
|
|
+ render_path_bind_target("texpaint_nor" + tid, "texpaint_nor");
|
|
|
|
+ render_path_bind_target("texpaint_pack" + tid, "texpaint_pack");
|
|
|
|
+ render_path_draw_meshes("paint");
|
|
if (useLiveLayer) RenderPathPaint.useLiveLayer(false);
|
|
if (useLiveLayer) RenderPathPaint.useLiveLayer(false);
|
|
UIHeader.headerHandle.redraws = 2;
|
|
UIHeader.headerHandle.redraws = 2;
|
|
UIBase.hwnds[2].redraws = 2;
|
|
UIBase.hwnds[2].redraws = 2;
|
|
|
|
|
|
- let texpaint_picker = RenderPath.renderTargets.get("texpaint_picker").image;
|
|
|
|
- let texpaint_nor_picker = RenderPath.renderTargets.get("texpaint_nor_picker").image;
|
|
|
|
- let texpaint_pack_picker = RenderPath.renderTargets.get("texpaint_pack_picker").image;
|
|
|
|
- let texpaint_uv_picker = RenderPath.renderTargets.get("texpaint_uv_picker").image;
|
|
|
|
- let a = new DataView(Image.getPixels(texpaint_picker));
|
|
|
|
- let b = new DataView(Image.getPixels(texpaint_nor_picker));
|
|
|
|
- let c = new DataView(Image.getPixels(texpaint_pack_picker));
|
|
|
|
- let d = new DataView(Image.getPixels(texpaint_uv_picker));
|
|
|
|
|
|
+ let texpaint_picker = render_path_render_targets.get("texpaint_picker").image;
|
|
|
|
+ let texpaint_nor_picker = render_path_render_targets.get("texpaint_nor_picker").image;
|
|
|
|
+ let texpaint_pack_picker = render_path_render_targets.get("texpaint_pack_picker").image;
|
|
|
|
+ let texpaint_uv_picker = render_path_render_targets.get("texpaint_uv_picker").image;
|
|
|
|
+ let a = new DataView(image_get_pixels(texpaint_picker));
|
|
|
|
+ let b = new DataView(image_get_pixels(texpaint_nor_picker));
|
|
|
|
+ let c = new DataView(image_get_pixels(texpaint_pack_picker));
|
|
|
|
+ let d = new DataView(image_get_pixels(texpaint_uv_picker));
|
|
|
|
|
|
if (Context.raw.colorPickerCallback != null) {
|
|
if (Context.raw.colorPickerCallback != null) {
|
|
Context.raw.colorPickerCallback(Context.raw.pickedColor);
|
|
Context.raw.colorPickerCallback(Context.raw.pickedColor);
|
|
@@ -239,25 +239,25 @@ class RenderPathPaint {
|
|
RenderPathBase.initVoxels();
|
|
RenderPathBase.initVoxels();
|
|
Config.raw.rp_gi = _rp_gi;
|
|
Config.raw.rp_gi = _rp_gi;
|
|
}
|
|
}
|
|
- RenderPath.clearImage("voxels", 0x00000000);
|
|
|
|
- RenderPath.setTarget("");
|
|
|
|
- RenderPath.setViewport(256, 256);
|
|
|
|
- RenderPath.bindTarget("voxels", "voxels");
|
|
|
|
- RenderPath.drawMeshes("voxel");
|
|
|
|
- RenderPath.generateMipmaps("voxels");
|
|
|
|
|
|
+ render_path_clear_image("voxels", 0x00000000);
|
|
|
|
+ render_path_set_target("");
|
|
|
|
+ render_path_set_viewport(256, 256);
|
|
|
|
+ render_path_bind_target("voxels", "voxels");
|
|
|
|
+ render_path_draw_meshes("voxel");
|
|
|
|
+ render_path_gen_mipmaps("voxels");
|
|
}
|
|
}
|
|
///end
|
|
///end
|
|
|
|
|
|
let texpaint = "texpaint" + tid;
|
|
let texpaint = "texpaint" + tid;
|
|
- if (Context.raw.tool == WorkspaceTool.ToolBake && Context.raw.brushTime == Time.delta) {
|
|
|
|
|
|
+ if (Context.raw.tool == WorkspaceTool.ToolBake && Context.raw.brushTime == time_delta()) {
|
|
// Clear to black on bake start
|
|
// Clear to black on bake start
|
|
- RenderPath.setTarget(texpaint);
|
|
|
|
- RenderPath.clearTarget(0xff000000);
|
|
|
|
|
|
+ render_path_set_target(texpaint);
|
|
|
|
+ render_path_clear_target(0xff000000);
|
|
}
|
|
}
|
|
|
|
|
|
- RenderPath.setTarget("texpaint_blend1");
|
|
|
|
- RenderPath.bindTarget("texpaint_blend0", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copyR8_pass");
|
|
|
|
|
|
+ render_path_set_target("texpaint_blend1");
|
|
|
|
+ render_path_bind_target("texpaint_blend0", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copyR8_pass");
|
|
let isMask = SlotLayer.isMask(Context.raw.layer);
|
|
let isMask = SlotLayer.isMask(Context.raw.layer);
|
|
if (isMask) {
|
|
if (isMask) {
|
|
let ptid = Context.raw.layer.parent.id;
|
|
let ptid = Context.raw.layer.parent.id;
|
|
@@ -267,23 +267,23 @@ class RenderPathPaint {
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- RenderPath.setTarget(texpaint, ["texpaint_nor" + ptid, "texpaint_pack" + ptid, "texpaint_blend0"]);
|
|
|
|
|
|
+ render_path_set_target(texpaint, ["texpaint_nor" + ptid, "texpaint_pack" + ptid, "texpaint_blend0"]);
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- RenderPath.setTarget(texpaint, ["texpaint_nor" + tid, "texpaint_pack" + tid, "texpaint_blend0"]);
|
|
|
|
|
|
+ render_path_set_target(texpaint, ["texpaint_nor" + tid, "texpaint_pack" + tid, "texpaint_blend0"]);
|
|
}
|
|
}
|
|
- RenderPath.bindTarget("_main", "gbufferD");
|
|
|
|
|
|
+ render_path_bind_target("_main", "gbufferD");
|
|
if ((Context.raw.xray || Config.raw.brush_angle_reject) && Config.raw.brush_3d) {
|
|
if ((Context.raw.xray || Config.raw.brush_angle_reject) && Config.raw.brush_3d) {
|
|
- RenderPath.bindTarget("gbuffer0", "gbuffer0");
|
|
|
|
|
|
+ render_path_bind_target("gbuffer0", "gbuffer0");
|
|
}
|
|
}
|
|
- RenderPath.bindTarget("texpaint_blend1", "paintmask");
|
|
|
|
|
|
+ render_path_bind_target("texpaint_blend1", "paintmask");
|
|
///if arm_voxels
|
|
///if arm_voxels
|
|
if (Context.raw.tool == WorkspaceTool.ToolBake && Context.raw.bakeType == BakeType.BakeAO) {
|
|
if (Context.raw.tool == WorkspaceTool.ToolBake && Context.raw.bakeType == BakeType.BakeAO) {
|
|
- RenderPath.bindTarget("voxels", "voxels");
|
|
|
|
|
|
+ render_path_bind_target("voxels", "voxels");
|
|
}
|
|
}
|
|
///end
|
|
///end
|
|
if (Context.raw.colorIdPicked) {
|
|
if (Context.raw.colorIdPicked) {
|
|
- RenderPath.bindTarget("texpaint_colorid", "texpaint_colorid");
|
|
|
|
|
|
+ render_path_bind_target("texpaint_colorid", "texpaint_colorid");
|
|
}
|
|
}
|
|
|
|
|
|
// Read texcoords from gbuffer
|
|
// Read texcoords from gbuffer
|
|
@@ -292,28 +292,28 @@ class RenderPathPaint {
|
|
Context.raw.tool == WorkspaceTool.ToolBlur ||
|
|
Context.raw.tool == WorkspaceTool.ToolBlur ||
|
|
Context.raw.tool == WorkspaceTool.ToolSmudge;
|
|
Context.raw.tool == WorkspaceTool.ToolSmudge;
|
|
if (readTC) {
|
|
if (readTC) {
|
|
- RenderPath.bindTarget("gbuffer2", "gbuffer2");
|
|
|
|
|
|
+ render_path_bind_target("gbuffer2", "gbuffer2");
|
|
}
|
|
}
|
|
|
|
|
|
- RenderPath.drawMeshes("paint");
|
|
|
|
|
|
+ render_path_draw_meshes("paint");
|
|
|
|
|
|
if (Context.raw.tool == WorkspaceTool.ToolBake && Context.raw.bakeType == BakeType.BakeCurvature && Context.raw.bakeCurvSmooth > 0) {
|
|
if (Context.raw.tool == WorkspaceTool.ToolBake && Context.raw.bakeType == BakeType.BakeCurvature && Context.raw.bakeCurvSmooth > 0) {
|
|
- if (RenderPath.renderTargets.get("texpaint_blur") == null) {
|
|
|
|
- let t = RenderTarget.create();
|
|
|
|
|
|
+ if (render_path_render_targets.get("texpaint_blur") == null) {
|
|
|
|
+ let t = render_target_create();
|
|
t.name = "texpaint_blur";
|
|
t.name = "texpaint_blur";
|
|
t.width = Math.floor(Config.getTextureResX() * 0.95);
|
|
t.width = Math.floor(Config.getTextureResX() * 0.95);
|
|
t.height = Math.floor(Config.getTextureResY() * 0.95);
|
|
t.height = Math.floor(Config.getTextureResY() * 0.95);
|
|
t.format = "RGBA32";
|
|
t.format = "RGBA32";
|
|
- RenderPath.createRenderTarget(t);
|
|
|
|
|
|
+ render_path_create_render_target(t);
|
|
}
|
|
}
|
|
let blurs = Math.round(Context.raw.bakeCurvSmooth);
|
|
let blurs = Math.round(Context.raw.bakeCurvSmooth);
|
|
for (let i = 0; i < blurs; ++i) {
|
|
for (let i = 0; i < blurs; ++i) {
|
|
- RenderPath.setTarget("texpaint_blur");
|
|
|
|
- RenderPath.bindTarget(texpaint, "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
- RenderPath.setTarget(texpaint);
|
|
|
|
- RenderPath.bindTarget("texpaint_blur", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
|
|
+ render_path_set_target("texpaint_blur");
|
|
|
|
+ render_path_bind_target(texpaint, "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
|
|
+ render_path_set_target(texpaint);
|
|
|
|
+ render_path_bind_target("texpaint_blur", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -325,15 +325,15 @@ class RenderPathPaint {
|
|
|
|
|
|
///if is_sculpt
|
|
///if is_sculpt
|
|
let texpaint = "texpaint" + tid;
|
|
let texpaint = "texpaint" + tid;
|
|
- RenderPath.setTarget("texpaint_blend1");
|
|
|
|
- RenderPath.bindTarget("texpaint_blend0", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copyR8_pass");
|
|
|
|
- RenderPath.setTarget(texpaint, ["texpaint_blend0"]);
|
|
|
|
- RenderPath.bindTarget("gbufferD_undo", "gbufferD");
|
|
|
|
|
|
+ render_path_set_target("texpaint_blend1");
|
|
|
|
+ render_path_bind_target("texpaint_blend0", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copyR8_pass");
|
|
|
|
+ render_path_set_target(texpaint, ["texpaint_blend0"]);
|
|
|
|
+ render_path_bind_target("gbufferD_undo", "gbufferD");
|
|
if ((Context.raw.xray || Config.raw.brush_angle_reject) && Config.raw.brush_3d) {
|
|
if ((Context.raw.xray || Config.raw.brush_angle_reject) && Config.raw.brush_3d) {
|
|
- RenderPath.bindTarget("gbuffer0", "gbuffer0");
|
|
|
|
|
|
+ render_path_bind_target("gbuffer0", "gbuffer0");
|
|
}
|
|
}
|
|
- RenderPath.bindTarget("texpaint_blend1", "paintmask");
|
|
|
|
|
|
+ render_path_bind_target("texpaint_blend1", "paintmask");
|
|
|
|
|
|
// Read texcoords from gbuffer
|
|
// Read texcoords from gbuffer
|
|
let readTC = (Context.raw.tool == WorkspaceTool.ToolFill && Context.raw.fillTypeHandle.position == FillType.FillFace) ||
|
|
let readTC = (Context.raw.tool == WorkspaceTool.ToolFill && Context.raw.fillTypeHandle.position == FillType.FillFace) ||
|
|
@@ -341,25 +341,25 @@ class RenderPathPaint {
|
|
Context.raw.tool == WorkspaceTool.ToolBlur ||
|
|
Context.raw.tool == WorkspaceTool.ToolBlur ||
|
|
Context.raw.tool == WorkspaceTool.ToolSmudge;
|
|
Context.raw.tool == WorkspaceTool.ToolSmudge;
|
|
if (readTC) {
|
|
if (readTC) {
|
|
- RenderPath.bindTarget("gbuffer2", "gbuffer2");
|
|
|
|
|
|
+ render_path_bind_target("gbuffer2", "gbuffer2");
|
|
}
|
|
}
|
|
- RenderPath.bindTarget("gbuffer0_undo", "gbuffer0_undo");
|
|
|
|
|
|
+ render_path_bind_target("gbuffer0_undo", "gbuffer0_undo");
|
|
|
|
|
|
- let materialContexts: TMaterialContext[] = [];
|
|
|
|
- let shaderContexts: TShaderContext[] = [];
|
|
|
|
|
|
+ let materialContexts: material_context_t[] = [];
|
|
|
|
+ let shaderContexts: shader_context_t[] = [];
|
|
let mats = Project.paintObjects[0].materials;
|
|
let mats = Project.paintObjects[0].materials;
|
|
MeshObject.getContexts(Project.paintObjects[0], "paint", mats, materialContexts, shaderContexts);
|
|
MeshObject.getContexts(Project.paintObjects[0], "paint", mats, materialContexts, shaderContexts);
|
|
|
|
|
|
let cc_context = shaderContexts[0];
|
|
let cc_context = shaderContexts[0];
|
|
if (ConstData.screenAlignedVB == null) ConstData.createScreenAlignedData();
|
|
if (ConstData.screenAlignedVB == null) ConstData.createScreenAlignedData();
|
|
- Graphics4.setPipeline(cc_context._pipeState);
|
|
|
|
- Uniforms.setContextConstants(RenderPath.currentG, cc_context, RenderPath.bindParams);
|
|
|
|
- Uniforms.setObjectConstants(RenderPath.currentG, cc_context, Project.paintObjects[0].base);
|
|
|
|
- Uniforms.setMaterialConstants(RenderPath.currentG, cc_context, materialContexts[0]);
|
|
|
|
- Graphics4.setVertexBuffer(ConstData.screenAlignedVB);
|
|
|
|
- Graphics4.setIndexBuffer(ConstData.screenAlignedIB);
|
|
|
|
- Graphics4.drawIndexedVertices();
|
|
|
|
- RenderPath.end();
|
|
|
|
|
|
+ g4_set_pipeline(cc_context._pipe_state);
|
|
|
|
+ uniforms_set_context_consts(_render_path_current_g, cc_context,render_path_bind_params);
|
|
|
|
+ uniforms_set_obj_consts(_render_path_current_g, cc_context, Project.paintObjects[0].base);
|
|
|
|
+ uniforms_set_material_consts(_render_path_current_g, cc_context, materialContexts[0]);
|
|
|
|
+ g4_set_vertex_buffer(ConstData.screenAlignedVB);
|
|
|
|
+ g4_set_index_buffer(ConstData.screenAlignedIB);
|
|
|
|
+ g4_draw();
|
|
|
|
+ render_path_end();
|
|
///end
|
|
///end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -368,29 +368,29 @@ class RenderPathPaint {
|
|
let tid = Context.raw.layer.id;
|
|
let tid = Context.raw.layer.id;
|
|
let hid = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1;
|
|
let hid = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1;
|
|
if (use) {
|
|
if (use) {
|
|
- RenderPathPaint._texpaint = RenderPath.renderTargets.get("texpaint" + tid);
|
|
|
|
- RenderPathPaint._texpaint_undo = RenderPath.renderTargets.get("texpaint_undo" + hid);
|
|
|
|
- RenderPathPaint._texpaint_nor_undo = RenderPath.renderTargets.get("texpaint_nor_undo" + hid);
|
|
|
|
- RenderPathPaint._texpaint_pack_undo = RenderPath.renderTargets.get("texpaint_pack_undo" + hid);
|
|
|
|
- RenderPathPaint._texpaint_nor = RenderPath.renderTargets.get("texpaint_nor" + tid);
|
|
|
|
- RenderPathPaint._texpaint_pack = RenderPath.renderTargets.get("texpaint_pack" + tid);
|
|
|
|
- RenderPath.renderTargets.set("texpaint_undo" + hid, RenderPath.renderTargets.get("texpaint" + tid));
|
|
|
|
- RenderPath.renderTargets.set("texpaint" + tid, RenderPath.renderTargets.get("texpaint_live"));
|
|
|
|
|
|
+ RenderPathPaint._texpaint = render_path_render_targets.get("texpaint" + tid);
|
|
|
|
+ RenderPathPaint._texpaint_undo = render_path_render_targets.get("texpaint_undo" + hid);
|
|
|
|
+ RenderPathPaint._texpaint_nor_undo = render_path_render_targets.get("texpaint_nor_undo" + hid);
|
|
|
|
+ RenderPathPaint._texpaint_pack_undo = render_path_render_targets.get("texpaint_pack_undo" + hid);
|
|
|
|
+ RenderPathPaint._texpaint_nor = render_path_render_targets.get("texpaint_nor" + tid);
|
|
|
|
+ RenderPathPaint._texpaint_pack = render_path_render_targets.get("texpaint_pack" + tid);
|
|
|
|
+ render_path_render_targets.set("texpaint_undo" + hid,render_path_render_targets.get("texpaint" + tid));
|
|
|
|
+ render_path_render_targets.set("texpaint" + tid,render_path_render_targets.get("texpaint_live"));
|
|
if (SlotLayer.isLayer(Context.raw.layer)) {
|
|
if (SlotLayer.isLayer(Context.raw.layer)) {
|
|
- RenderPath.renderTargets.set("texpaint_nor_undo" + hid, RenderPath.renderTargets.get("texpaint_nor" + tid));
|
|
|
|
- RenderPath.renderTargets.set("texpaint_pack_undo" + hid, RenderPath.renderTargets.get("texpaint_pack" + tid));
|
|
|
|
- RenderPath.renderTargets.set("texpaint_nor" + tid, RenderPath.renderTargets.get("texpaint_nor_live"));
|
|
|
|
- RenderPath.renderTargets.set("texpaint_pack" + tid, RenderPath.renderTargets.get("texpaint_pack_live"));
|
|
|
|
|
|
+ render_path_render_targets.set("texpaint_nor_undo" + hid,render_path_render_targets.get("texpaint_nor" + tid));
|
|
|
|
+ render_path_render_targets.set("texpaint_pack_undo" + hid,render_path_render_targets.get("texpaint_pack" + tid));
|
|
|
|
+ render_path_render_targets.set("texpaint_nor" + tid,render_path_render_targets.get("texpaint_nor_live"));
|
|
|
|
+ render_path_render_targets.set("texpaint_pack" + tid,render_path_render_targets.get("texpaint_pack_live"));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- RenderPath.renderTargets.set("texpaint" + tid, RenderPathPaint._texpaint);
|
|
|
|
- RenderPath.renderTargets.set("texpaint_undo" + hid, RenderPathPaint._texpaint_undo);
|
|
|
|
|
|
+ render_path_render_targets.set("texpaint" + tid, RenderPathPaint._texpaint);
|
|
|
|
+ render_path_render_targets.set("texpaint_undo" + hid, RenderPathPaint._texpaint_undo);
|
|
if (SlotLayer.isLayer(Context.raw.layer)) {
|
|
if (SlotLayer.isLayer(Context.raw.layer)) {
|
|
- RenderPath.renderTargets.set("texpaint_nor_undo" + hid, RenderPathPaint._texpaint_nor_undo);
|
|
|
|
- RenderPath.renderTargets.set("texpaint_pack_undo" + hid, RenderPathPaint._texpaint_pack_undo);
|
|
|
|
- RenderPath.renderTargets.set("texpaint_nor" + tid, RenderPathPaint._texpaint_nor);
|
|
|
|
- RenderPath.renderTargets.set("texpaint_pack" + tid, RenderPathPaint._texpaint_pack);
|
|
|
|
|
|
+ render_path_render_targets.set("texpaint_nor_undo" + hid, RenderPathPaint._texpaint_nor_undo);
|
|
|
|
+ render_path_render_targets.set("texpaint_pack_undo" + hid, RenderPathPaint._texpaint_pack_undo);
|
|
|
|
+ render_path_render_targets.set("texpaint_nor" + tid, RenderPathPaint._texpaint_nor);
|
|
|
|
+ render_path_render_targets.set("texpaint_pack" + tid, RenderPathPaint._texpaint_pack);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
RenderPathPaint.liveLayerLocked = use;
|
|
RenderPathPaint.liveLayerLocked = use;
|
|
@@ -416,16 +416,16 @@ class RenderPathPaint {
|
|
|
|
|
|
let tid = Context.raw.layer.id;
|
|
let tid = Context.raw.layer.id;
|
|
if (SlotLayer.isMask(Context.raw.layer)) {
|
|
if (SlotLayer.isMask(Context.raw.layer)) {
|
|
- RenderPath.setTarget("texpaint_live");
|
|
|
|
- RenderPath.bindTarget("texpaint" + tid, "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
|
|
+ render_path_set_target("texpaint_live");
|
|
|
|
+ render_path_bind_target("texpaint" + tid, "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
- RenderPath.setTarget("texpaint_live", ["texpaint_nor_live", "texpaint_pack_live"]);
|
|
|
|
- RenderPath.bindTarget("texpaint" + tid, "tex0");
|
|
|
|
- RenderPath.bindTarget("texpaint_nor" + tid, "tex1");
|
|
|
|
- RenderPath.bindTarget("texpaint_pack" + tid, "tex2");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_mrt3_pass/copy_mrt3_pass");
|
|
|
|
|
|
+ render_path_set_target("texpaint_live", ["texpaint_nor_live", "texpaint_pack_live"]);
|
|
|
|
+ render_path_bind_target("texpaint" + tid, "tex0");
|
|
|
|
+ render_path_bind_target("texpaint_nor" + tid, "tex1");
|
|
|
|
+ render_path_bind_target("texpaint_pack" + tid, "tex2");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_mrt3_pass/copy_mrt3_pass");
|
|
}
|
|
}
|
|
|
|
|
|
RenderPathPaint.useLiveLayer(true);
|
|
RenderPathPaint.useLiveLayer(true);
|
|
@@ -495,40 +495,40 @@ class RenderPathPaint {
|
|
}
|
|
}
|
|
|
|
|
|
static drawCursor = (mx: f32, my: f32, radius: f32, tintR = 1.0, tintG = 1.0, tintB = 1.0) => {
|
|
static drawCursor = (mx: f32, my: f32, radius: f32, tintR = 1.0, tintG = 1.0, tintB = 1.0) => {
|
|
- let plane: TMeshObject = Scene.getChild(".Plane").ext;
|
|
|
|
|
|
+ let plane: TMeshObject = scene_get_child(".Plane").ext;
|
|
let geom = plane.data;
|
|
let geom = plane.data;
|
|
|
|
|
|
- let g = RenderPath.frameG;
|
|
|
|
|
|
+ let g =_render_path_frame_g;
|
|
if (Base.pipeCursor == null) Base.makeCursorPipe();
|
|
if (Base.pipeCursor == null) Base.makeCursorPipe();
|
|
|
|
|
|
- RenderPath.setTarget("");
|
|
|
|
- Graphics4.setPipeline(Base.pipeCursor);
|
|
|
|
|
|
+ render_path_set_target("");
|
|
|
|
+ g4_set_pipeline(Base.pipeCursor);
|
|
let decal = Context.raw.tool == WorkspaceTool.ToolDecal || Context.raw.tool == WorkspaceTool.ToolText;
|
|
let decal = Context.raw.tool == WorkspaceTool.ToolDecal || Context.raw.tool == WorkspaceTool.ToolText;
|
|
let decalMask = decal && Operator.shortcut(Config.keymap.decal_mask, ShortcutType.ShortcutDown);
|
|
let decalMask = decal && Operator.shortcut(Config.keymap.decal_mask, ShortcutType.ShortcutDown);
|
|
let img = (decal && !decalMask) ? Context.raw.decalImage : Res.get("cursor.k");
|
|
let img = (decal && !decalMask) ? Context.raw.decalImage : Res.get("cursor.k");
|
|
- Graphics4.setTexture(Base.cursorTex, img);
|
|
|
|
- let gbuffer0 = RenderPath.renderTargets.get("gbuffer0").image;
|
|
|
|
- Graphics4.setTextureDepth(Base.cursorGbufferD, gbuffer0);
|
|
|
|
- Graphics4.setFloat2(Base.cursorMouse, mx, my);
|
|
|
|
- Graphics4.setFloat2(Base.cursorTexStep, 1 / gbuffer0.width, 1 / gbuffer0.height);
|
|
|
|
- Graphics4.setFloat(Base.cursorRadius, radius);
|
|
|
|
- let right = Vec4.normalize(CameraObject.rightWorld(Scene.camera));
|
|
|
|
- Graphics4.setFloat3(Base.cursorCameraRight, right.x, right.y, right.z);
|
|
|
|
- Graphics4.setFloat3(Base.cursorTint, tintR, tintG, tintB);
|
|
|
|
- Graphics4.setMatrix(Base.cursorVP, Scene.camera.VP);
|
|
|
|
- let helpMat = Mat4.identity();
|
|
|
|
- Mat4.getInverse(helpMat, Scene.camera.VP);
|
|
|
|
- Graphics4.setMatrix(Base.cursorInvVP, helpMat);
|
|
|
|
|
|
+ g4_set_tex(Base.cursorTex, img);
|
|
|
|
+ let gbuffer0 = render_path_render_targets.get("gbuffer0").image;
|
|
|
|
+ g4_set_tex_depth(Base.cursorGbufferD, gbuffer0);
|
|
|
|
+ g4_set_float2(Base.cursorMouse, mx, my);
|
|
|
|
+ g4_set_float2(Base.cursorTexStep, 1 / gbuffer0.width, 1 / gbuffer0.height);
|
|
|
|
+ g4_set_float(Base.cursorRadius, radius);
|
|
|
|
+ let right = vec4_normalize(CameraObject.rightWorld(scene_camera));
|
|
|
|
+ g4_set_float3(Base.cursorCameraRight, right.x, right.y, right.z);
|
|
|
|
+ g4_set_float3(Base.cursorTint, tintR, tintG, tintB);
|
|
|
|
+ g4_set_mat(Base.cursorVP, scene_camera.VP);
|
|
|
|
+ let helpMat = mat4_identity();
|
|
|
|
+ mat4_get_inv(helpMat, scene_camera.VP);
|
|
|
|
+ g4_set_mat(Base.cursorInvVP, helpMat);
|
|
///if (krom_metal || krom_vulkan)
|
|
///if (krom_metal || krom_vulkan)
|
|
- Graphics4.setVertexBuffer(MeshData.get(geom, [{name: "tex", data: "short2norm"}]));
|
|
|
|
|
|
+ g4_set_vertex_buffer(MeshData.get(geom, [{name: "tex", data: "short2norm"}]));
|
|
///else
|
|
///else
|
|
- Graphics4.setVertexBuffer(geom._vertexBuffer);
|
|
|
|
|
|
+ g4_set_vertex_buffer(geom._vertex_buffer);
|
|
///end
|
|
///end
|
|
- Graphics4.setIndexBuffer(geom._indexBuffers[0]);
|
|
|
|
- Graphics4.drawIndexedVertices();
|
|
|
|
|
|
+ g4_set_index_buffer(geom._index_buffers[0]);
|
|
|
|
+ g4_draw();
|
|
|
|
|
|
- Graphics4.disableScissor();
|
|
|
|
- RenderPath.end();
|
|
|
|
|
|
+ g4_disable_scissor();
|
|
|
|
+ render_path_end();
|
|
}
|
|
}
|
|
|
|
|
|
static commandsSymmetry = () => {
|
|
static commandsSymmetry = () => {
|
|
@@ -539,42 +539,42 @@ class RenderPathPaint {
|
|
let sy = t.scale.y;
|
|
let sy = t.scale.y;
|
|
let sz = t.scale.z;
|
|
let sz = t.scale.z;
|
|
if (Context.raw.symX) {
|
|
if (Context.raw.symX) {
|
|
- Vec4.set(t.scale, -sx, sy, sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, -sx, sy, sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
if (Context.raw.symY) {
|
|
if (Context.raw.symY) {
|
|
- Vec4.set(t.scale, sx, -sy, sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, sx, -sy, sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
if (Context.raw.symZ) {
|
|
if (Context.raw.symZ) {
|
|
- Vec4.set(t.scale, sx, sy, -sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, sx, sy, -sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
if (Context.raw.symX && Context.raw.symY) {
|
|
if (Context.raw.symX && Context.raw.symY) {
|
|
- Vec4.set(t.scale, -sx, -sy, sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, -sx, -sy, sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
if (Context.raw.symX && Context.raw.symZ) {
|
|
if (Context.raw.symX && Context.raw.symZ) {
|
|
- Vec4.set(t.scale, -sx, sy, -sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, -sx, sy, -sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
if (Context.raw.symY && Context.raw.symZ) {
|
|
if (Context.raw.symY && Context.raw.symZ) {
|
|
- Vec4.set(t.scale, sx, -sy, -sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, sx, -sy, -sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
if (Context.raw.symX && Context.raw.symY && Context.raw.symZ) {
|
|
if (Context.raw.symX && Context.raw.symY && Context.raw.symZ) {
|
|
- Vec4.set(t.scale, -sx, -sy, -sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, -sx, -sy, -sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
RenderPathPaint.commandsPaint(false);
|
|
RenderPathPaint.commandsPaint(false);
|
|
}
|
|
}
|
|
- Vec4.set(t.scale, sx, sy, sz);
|
|
|
|
- Transform.buildMatrix(t);
|
|
|
|
|
|
+ vec4_set(t.scale, sx, sy, sz);
|
|
|
|
+ transform_build_matrix(t);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -594,8 +594,8 @@ class RenderPathPaint {
|
|
static liveBrushDirty = () => {
|
|
static liveBrushDirty = () => {
|
|
let mx = RenderPathPaint.lastX;
|
|
let mx = RenderPathPaint.lastX;
|
|
let my = RenderPathPaint.lastY;
|
|
let my = RenderPathPaint.lastY;
|
|
- RenderPathPaint.lastX = Mouse.viewX;
|
|
|
|
- RenderPathPaint.lastY = Mouse.viewY;
|
|
|
|
|
|
+ RenderPathPaint.lastX = mouse_view_x();
|
|
|
|
+ RenderPathPaint.lastY = mouse_view_y();
|
|
if (Config.raw.brush_live && Context.raw.pdirty <= 0) {
|
|
if (Config.raw.brush_live && Context.raw.pdirty <= 0) {
|
|
let moved = (mx != RenderPathPaint.lastX || my != RenderPathPaint.lastY) && (Context.inViewport() || Context.in2dView());
|
|
let moved = (mx != RenderPathPaint.lastX || my != RenderPathPaint.lastY) && (Context.inViewport() || Context.in2dView());
|
|
if (moved || Context.raw.brushLocked) {
|
|
if (moved || Context.raw.brushLocked) {
|
|
@@ -623,13 +623,13 @@ class RenderPathPaint {
|
|
History.paint();
|
|
History.paint();
|
|
|
|
|
|
///if is_sculpt
|
|
///if is_sculpt
|
|
- RenderPath.setTarget("gbuffer0_undo");
|
|
|
|
- RenderPath.bindTarget("gbuffer0", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
|
|
+ render_path_set_target("gbuffer0_undo");
|
|
|
|
+ render_path_bind_target("gbuffer0", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
|
|
|
|
- RenderPath.setTarget("gbufferD_undo");
|
|
|
|
- RenderPath.bindTarget("_main", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
|
|
+ render_path_set_target("gbufferD_undo");
|
|
|
|
+ render_path_bind_target("_main", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
///end
|
|
///end
|
|
}
|
|
}
|
|
|
|
|
|
@@ -765,13 +765,13 @@ class RenderPathPaint {
|
|
if (Context.raw.brushBlendDirty) {
|
|
if (Context.raw.brushBlendDirty) {
|
|
Context.raw.brushBlendDirty = false;
|
|
Context.raw.brushBlendDirty = false;
|
|
///if krom_metal
|
|
///if krom_metal
|
|
- RenderPath.setTarget("texpaint_blend0");
|
|
|
|
- RenderPath.clearTarget(0x00000000);
|
|
|
|
- RenderPath.setTarget("texpaint_blend1");
|
|
|
|
- RenderPath.clearTarget(0x00000000);
|
|
|
|
|
|
+ render_path_set_target("texpaint_blend0");
|
|
|
|
+ render_path_clear_target(0x00000000);
|
|
|
|
+ render_path_set_target("texpaint_blend1");
|
|
|
|
+ render_path_clear_target(0x00000000);
|
|
///else
|
|
///else
|
|
- RenderPath.setTarget("texpaint_blend0", ["texpaint_blend1"]);
|
|
|
|
- RenderPath.clearTarget(0x00000000);
|
|
|
|
|
|
+ render_path_set_target("texpaint_blend0", ["texpaint_blend1"]);
|
|
|
|
+ render_path_clear_target(0x00000000);
|
|
///end
|
|
///end
|
|
}
|
|
}
|
|
|
|
|
|
@@ -793,13 +793,13 @@ class RenderPathPaint {
|
|
Context.raw.mergedObject.base.visible = false;
|
|
Context.raw.mergedObject.base.visible = false;
|
|
}
|
|
}
|
|
|
|
|
|
- let cam = Scene.camera;
|
|
|
|
- Mat4.setFrom(Context.raw.savedCamera, cam.base.transform.local);
|
|
|
|
|
|
+ let cam = scene_camera;
|
|
|
|
+ mat4_set_from(Context.raw.savedCamera, cam.base.transform.local);
|
|
RenderPathPaint.savedFov = cam.data.fov;
|
|
RenderPathPaint.savedFov = cam.data.fov;
|
|
Viewport.updateCameraType(CameraType.CameraPerspective);
|
|
Viewport.updateCameraType(CameraType.CameraPerspective);
|
|
- let m = Mat4.identity();
|
|
|
|
- Mat4.translate(m, 0, 0, 0.5);
|
|
|
|
- Transform.setMatrix(cam.base.transform, m);
|
|
|
|
|
|
+ let m = mat4_identity();
|
|
|
|
+ mat4_translate(m, 0, 0, 0.5);
|
|
|
|
+ transform_set_matrix(cam.base.transform, m);
|
|
cam.data.fov = Base.defaultFov;
|
|
cam.data.fov = Base.defaultFov;
|
|
CameraObject.buildProjection(cam);
|
|
CameraObject.buildProjection(cam);
|
|
CameraObject.buildMatrix(cam);
|
|
CameraObject.buildMatrix(cam);
|
|
@@ -807,21 +807,21 @@ class RenderPathPaint {
|
|
let tw = 0.95 * UIView2D.panScale;
|
|
let tw = 0.95 * UIView2D.panScale;
|
|
let tx = UIView2D.panX / UIView2D.ww;
|
|
let tx = UIView2D.panX / UIView2D.ww;
|
|
let ty = UIView2D.panY / App.h();
|
|
let ty = UIView2D.panY / App.h();
|
|
- Mat4.setIdentity(m);
|
|
|
|
- Mat4.scale(m, Vec4.create(tw, tw, 1));
|
|
|
|
- Mat4.setLoc(m, Vec4.create(tx, ty, 0));
|
|
|
|
- let m2 = Mat4.identity();
|
|
|
|
- Mat4.getInverse(m2, Scene.camera.VP);
|
|
|
|
- Mat4.multmat(m, m2);
|
|
|
|
|
|
+ mat4_set_identity(m);
|
|
|
|
+ mat4_scale(m, vec4_create(tw, tw, 1));
|
|
|
|
+ mat4_set_loc(m, vec4_create(tx, ty, 0));
|
|
|
|
+ let m2 = mat4_identity();
|
|
|
|
+ mat4_get_inv(m2, scene_camera.VP);
|
|
|
|
+ mat4_mult_mat(m, m2);
|
|
|
|
|
|
let tiled = UIView2D.tiledShow;
|
|
let tiled = UIView2D.tiledShow;
|
|
- if (tiled && Scene.getChild(".PlaneTiled") == null) {
|
|
|
|
|
|
+ if (tiled && scene_get_child(".PlaneTiled") == null) {
|
|
// 3x3 planes
|
|
// 3x3 planes
|
|
let posa = [32767,0,-32767,0,10922,0,-10922,0,10922,0,-32767,0,10922,0,-10922,0,-10922,0,10922,0,-10922,0,-10922,0,-10922,0,10922,0,-32767,0,32767,0,-32767,0,10922,0,10922,0,10922,0,-10922,0,32767,0,-10922,0,10922,0,32767,0,10922,0,10922,0,32767,0,10922,0,10922,0,-10922,0,-10922,0,-32767,0,10922,0,-32767,0,-10922,0,32767,0,-10922,0,10922,0,10922,0,10922,0,-10922,0,-10922,0,-32767,0,-32767,0,-10922,0,-32767,0,-32767,0,10922,0,-32767,0,-10922,0,-10922,0,-10922,0,-32767,0,32767,0,-32767,0,32767,0,-10922,0,10922,0,-10922,0,10922,0,-10922,0,10922,0,10922,0,-10922,0,10922,0,-10922,0,10922,0,-10922,0,32767,0,-32767,0,32767,0,10922,0,10922,0,10922,0,32767,0,-10922,0,32767,0,32767,0,10922,0,32767,0,32767,0,10922,0,32767,0,-10922,0,-10922,0,-10922,0,10922,0,-32767,0,10922,0,32767,0,-10922,0,32767,0,10922,0,10922,0,10922,0,-10922,0,-32767,0,-10922,0,-10922,0,-32767,0,-10922,0,10922,0,-32767,0,10922,0,-10922,0,-10922,0,-10922,0];
|
|
let posa = [32767,0,-32767,0,10922,0,-10922,0,10922,0,-32767,0,10922,0,-10922,0,-10922,0,10922,0,-10922,0,-10922,0,-10922,0,10922,0,-32767,0,32767,0,-32767,0,10922,0,10922,0,10922,0,-10922,0,32767,0,-10922,0,10922,0,32767,0,10922,0,10922,0,32767,0,10922,0,10922,0,-10922,0,-10922,0,-32767,0,10922,0,-32767,0,-10922,0,32767,0,-10922,0,10922,0,10922,0,10922,0,-10922,0,-10922,0,-32767,0,-32767,0,-10922,0,-32767,0,-32767,0,10922,0,-32767,0,-10922,0,-10922,0,-10922,0,-32767,0,32767,0,-32767,0,32767,0,-10922,0,10922,0,-10922,0,10922,0,-10922,0,10922,0,10922,0,-10922,0,10922,0,-10922,0,10922,0,-10922,0,32767,0,-32767,0,32767,0,10922,0,10922,0,10922,0,32767,0,-10922,0,32767,0,32767,0,10922,0,32767,0,32767,0,10922,0,32767,0,-10922,0,-10922,0,-10922,0,10922,0,-32767,0,10922,0,32767,0,-10922,0,32767,0,10922,0,10922,0,10922,0,-10922,0,-32767,0,-10922,0,-10922,0,-32767,0,-10922,0,10922,0,-32767,0,10922,0,-10922,0,-10922,0,-10922,0];
|
|
let nora = [0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767];
|
|
let nora = [0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767,0,-32767];
|
|
let texa = [32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0];
|
|
let texa = [32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0];
|
|
let inda = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53];
|
|
let inda = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53];
|
|
- let raw: TMeshData = {
|
|
|
|
|
|
+ let raw: mesh_data_t = {
|
|
name: ".PlaneTiled",
|
|
name: ".PlaneTiled",
|
|
vertex_arrays: [
|
|
vertex_arrays: [
|
|
{ attrib: "pos", values: new Int16Array(posa), data: "short4norm" },
|
|
{ attrib: "pos", values: new Int16Array(posa), data: "short4norm" },
|
|
@@ -834,30 +834,30 @@ class RenderPathPaint {
|
|
scale_pos: 1.5,
|
|
scale_pos: 1.5,
|
|
scale_tex: 1.0
|
|
scale_tex: 1.0
|
|
};
|
|
};
|
|
- MeshData.create(raw, (md: TMeshData) => {
|
|
|
|
- let materials: TMaterialData[] = Scene.getChild(".Plane").ext.materials;
|
|
|
|
- let o = Scene.addMeshObject(md, materials);
|
|
|
|
|
|
+ MeshData.create(raw, (md: mesh_data_t) => {
|
|
|
|
+ let materials: material_data_t[] = scene_get_child(".Plane").ext.materials;
|
|
|
|
+ let o = scene_add_mesh_object(md, materials);
|
|
o.base.name = ".PlaneTiled";
|
|
o.base.name = ".PlaneTiled";
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
- RenderPathPaint.planeo = Scene.getChild(tiled ? ".PlaneTiled" : ".Plane").ext;
|
|
|
|
|
|
+ RenderPathPaint.planeo = scene_get_child(tiled ? ".PlaneTiled" : ".Plane").ext;
|
|
RenderPathPaint.planeo.base.visible = true;
|
|
RenderPathPaint.planeo.base.visible = true;
|
|
Context.raw.paintObject = RenderPathPaint.planeo;
|
|
Context.raw.paintObject = RenderPathPaint.planeo;
|
|
|
|
|
|
- let v = Vec4.create();
|
|
|
|
- let sx = Vec4.vec4_length(Vec4.set(v, m._00, m._01, m._02));
|
|
|
|
- Quat.fromEuler(RenderPathPaint.planeo.base.transform.rot, -Math.PI / 2, 0, 0);
|
|
|
|
- Vec4.set(RenderPathPaint.planeo.base.transform.scale, sx, 1.0, sx);
|
|
|
|
|
|
+ let v = vec4_create();
|
|
|
|
+ let sx = vec4_len(vec4_set(v, m._00, m._01, m._02));
|
|
|
|
+ quat_from_euler(RenderPathPaint.planeo.base.transform.rot, -Math.PI / 2, 0, 0);
|
|
|
|
+ vec4_set(RenderPathPaint.planeo.base.transform.scale, sx, 1.0, sx);
|
|
RenderPathPaint.planeo.base.transform.scale.z *= Config.getTextureResY() / Config.getTextureResX();
|
|
RenderPathPaint.planeo.base.transform.scale.z *= Config.getTextureResY() / Config.getTextureResX();
|
|
- Vec4.set(RenderPathPaint.planeo.base.transform.loc, m._30, -m._31, 0.0);
|
|
|
|
- Transform.buildMatrix(RenderPathPaint.planeo.base.transform);
|
|
|
|
|
|
+ vec4_set(RenderPathPaint.planeo.base.transform.loc, m._30, -m._31, 0.0);
|
|
|
|
+ transform_build_matrix(RenderPathPaint.planeo.base.transform);
|
|
}
|
|
}
|
|
|
|
|
|
static restorePlaneMesh = () => {
|
|
static restorePlaneMesh = () => {
|
|
Context.raw.paint2dView = false;
|
|
Context.raw.paint2dView = false;
|
|
RenderPathPaint.planeo.base.visible = false;
|
|
RenderPathPaint.planeo.base.visible = false;
|
|
- Vec4.set(RenderPathPaint.planeo.base.transform.loc, 0.0, 0.0, 0.0);
|
|
|
|
|
|
+ vec4_set(RenderPathPaint.planeo.base.transform.loc, 0.0, 0.0, 0.0);
|
|
for (let i = 0; i < Project.paintObjects.length; ++i) {
|
|
for (let i = 0; i < Project.paintObjects.length; ++i) {
|
|
Project.paintObjects[i].base.visible = RenderPathPaint.visibles[i];
|
|
Project.paintObjects[i].base.visible = RenderPathPaint.visibles[i];
|
|
}
|
|
}
|
|
@@ -865,11 +865,11 @@ class RenderPathPaint {
|
|
Context.raw.mergedObject.base.visible = RenderPathPaint.mergedObjectVisible;
|
|
Context.raw.mergedObject.base.visible = RenderPathPaint.mergedObjectVisible;
|
|
}
|
|
}
|
|
Context.raw.paintObject = RenderPathPaint.painto;
|
|
Context.raw.paintObject = RenderPathPaint.painto;
|
|
- Transform.setMatrix(Scene.camera.base.transform, Context.raw.savedCamera);
|
|
|
|
- Scene.camera.data.fov = RenderPathPaint.savedFov;
|
|
|
|
|
|
+ transform_set_matrix(scene_camera.base.transform, Context.raw.savedCamera);
|
|
|
|
+ scene_camera.data.fov = RenderPathPaint.savedFov;
|
|
Viewport.updateCameraType(Context.raw.cameraType);
|
|
Viewport.updateCameraType(Context.raw.cameraType);
|
|
- CameraObject.buildProjection(Scene.camera);
|
|
|
|
- CameraObject.buildMatrix(Scene.camera);
|
|
|
|
|
|
+ CameraObject.buildProjection(scene_camera);
|
|
|
|
+ CameraObject.buildMatrix(scene_camera);
|
|
|
|
|
|
RenderPathBase.drawGbuffer();
|
|
RenderPathBase.drawGbuffer();
|
|
}
|
|
}
|
|
@@ -883,12 +883,12 @@ class RenderPathPaint {
|
|
|
|
|
|
for (let i = 0; i < Project.layers.length; ++i) {
|
|
for (let i = 0; i < Project.layers.length; ++i) {
|
|
let l = Project.layers[i];
|
|
let l = Project.layers[i];
|
|
- RenderPath.bindTarget("texpaint" + l.id, "texpaint" + l.id);
|
|
|
|
|
|
+ render_path_bind_target("texpaint" + l.id, "texpaint" + l.id);
|
|
|
|
|
|
///if is_paint
|
|
///if is_paint
|
|
if (SlotLayer.isLayer(l)) {
|
|
if (SlotLayer.isLayer(l)) {
|
|
- RenderPath.bindTarget("texpaint_nor" + l.id, "texpaint_nor" + l.id);
|
|
|
|
- RenderPath.bindTarget("texpaint_pack" + l.id, "texpaint_pack" + l.id);
|
|
|
|
|
|
+ render_path_bind_target("texpaint_nor" + l.id, "texpaint_nor" + l.id);
|
|
|
|
+ render_path_bind_target("texpaint_pack" + l.id, "texpaint_pack" + l.id);
|
|
}
|
|
}
|
|
///end
|
|
///end
|
|
}
|
|
}
|
|
@@ -910,27 +910,27 @@ class RenderPathPaint {
|
|
let tid = Context.raw.layer.id;
|
|
let tid = Context.raw.layer.id;
|
|
if (base) {
|
|
if (base) {
|
|
let texpaint = "texpaint";
|
|
let texpaint = "texpaint";
|
|
- RenderPath.setTarget("temptex0");
|
|
|
|
- RenderPath.bindTarget(texpaint + tid, "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
- RenderPath.setTarget(texpaint + tid);
|
|
|
|
- RenderPath.bindTarget("temptex0", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/dilate_pass/dilate_pass");
|
|
|
|
|
|
+ render_path_set_target("temptex0");
|
|
|
|
+ render_path_bind_target(texpaint + tid, "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
|
|
+ render_path_set_target(texpaint + tid);
|
|
|
|
+ render_path_bind_target("temptex0", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/dilate_pass/dilate_pass");
|
|
}
|
|
}
|
|
if (nor_pack && !SlotLayer.isMask(Context.raw.layer)) {
|
|
if (nor_pack && !SlotLayer.isMask(Context.raw.layer)) {
|
|
- RenderPath.setTarget("temptex0");
|
|
|
|
- RenderPath.bindTarget("texpaint_nor" + tid, "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
- RenderPath.setTarget("texpaint_nor" + tid);
|
|
|
|
- RenderPath.bindTarget("temptex0", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/dilate_pass/dilate_pass");
|
|
|
|
-
|
|
|
|
- RenderPath.setTarget("temptex0");
|
|
|
|
- RenderPath.bindTarget("texpaint_pack" + tid, "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/copy_pass/copy_pass");
|
|
|
|
- RenderPath.setTarget("texpaint_pack" + tid);
|
|
|
|
- RenderPath.bindTarget("temptex0", "tex");
|
|
|
|
- RenderPath.drawShader("shader_datas/dilate_pass/dilate_pass");
|
|
|
|
|
|
+ render_path_set_target("temptex0");
|
|
|
|
+ render_path_bind_target("texpaint_nor" + tid, "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
|
|
+ render_path_set_target("texpaint_nor" + tid);
|
|
|
|
+ render_path_bind_target("temptex0", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/dilate_pass/dilate_pass");
|
|
|
|
+
|
|
|
|
+ render_path_set_target("temptex0");
|
|
|
|
+ render_path_bind_target("texpaint_pack" + tid, "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/copy_pass/copy_pass");
|
|
|
|
+ render_path_set_target("texpaint_pack" + tid);
|
|
|
|
+ render_path_bind_target("temptex0", "tex");
|
|
|
|
+ render_path_draw_shader("shader_datas/dilate_pass/dilate_pass");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
///end
|
|
///end
|