New project
This commit is contained in:
@@ -3,19 +3,22 @@ import arm.material.mat_utils
|
||||
import arm.write_data
|
||||
import arm.assets
|
||||
import arm.make_renderpath
|
||||
import arm.make_state
|
||||
|
||||
def on_make_renderpath():
|
||||
arm.assets.add_shader_pass('max_luminance_pass')
|
||||
arm.assets.add_shader_pass('copy_mrt3_pass')
|
||||
arm.assets.add_shader_pass('copy_mrt4_pass')
|
||||
|
||||
def register():
|
||||
|
||||
if bpy.data.worlds['Arm'].arm_project_name == 'ArmorPaint':
|
||||
arm.material.mat_utils.add_mesh_contexts.append('voxel') # Defaults to make_ao
|
||||
arm.write_data.add_compiledglsl = """
|
||||
const ivec3 voxelgiResolution = ivec3(256, 256, 256);
|
||||
const vec3 voxelgiHalfExtents = vec3(2.0, 2.0, 2.0);
|
||||
"""
|
||||
if arm.make_state.target == 'krom':
|
||||
arm.material.mat_utils.add_mesh_contexts = ['voxel'] # Defaults to make_ao
|
||||
arm.write_data.add_compiledglsl = """
|
||||
const ivec3 voxelgiResolution = ivec3(256, 256, 256);
|
||||
const vec3 voxelgiHalfExtents = vec3(2.0, 2.0, 2.0);
|
||||
"""
|
||||
else:
|
||||
arm.material.mat_utils.add_mesh_contexts = []
|
||||
|
||||
def register():
|
||||
arm.make_renderpath.callback = on_make_renderpath
|
||||
|
||||
@@ -714,8 +714,8 @@ class UINodes extends iron.Trait {
|
||||
frag.add_function(armory.system.CyclesFunctions.str_octahedronWrap);
|
||||
|
||||
// Apply normal channel
|
||||
vert.add_uniform('vec3 eye', '_cameraPosition');
|
||||
vert.add_uniform('mat4 W', '_worldMatrix');
|
||||
vert.add_uniform('vec3 eye', '_cameraPosition'); // eyeDir discard
|
||||
vert.add_uniform('mat4 W', '_worldMatrix'); //eyeDir discard
|
||||
vert.write('vec4 spos = vec4(pos, 1.0);');
|
||||
vert.write('vec4 wposition = W * spos;');
|
||||
vert.add_out('vec3 eyeDir');
|
||||
@@ -1168,6 +1168,7 @@ class UINodes extends iron.Trait {
|
||||
|
||||
if (UITrait.inst.brushType == 2 && UITrait.inst.autoFillHandle.selected) { // Fill
|
||||
UITrait.inst.pdirty = 8;
|
||||
UITrait.inst.ddirty = 8;
|
||||
}
|
||||
// }
|
||||
// else {
|
||||
|
||||
+60
-18
@@ -145,9 +145,7 @@ class UITrait extends iron.Trait {
|
||||
public static var defaultWindowW = 280;
|
||||
|
||||
public static var penPressure = true;
|
||||
public static var drawWorld = true;
|
||||
public static var undoEnabled = true;
|
||||
public static var worldColor = 0xffffffff;
|
||||
|
||||
public var isScrolling = false;
|
||||
public var colorIdPicked = false;
|
||||
@@ -157,6 +155,9 @@ class UITrait extends iron.Trait {
|
||||
var message = "";
|
||||
var messageTimer = 0.0;
|
||||
|
||||
var savedEnvmap:kha.Image = null;
|
||||
var emptyEnvmap:kha.Image = null;
|
||||
|
||||
public var ddirty = 0;
|
||||
public var pdirty = 0;
|
||||
public var rdirty = 0;
|
||||
@@ -255,6 +256,9 @@ class UITrait extends iron.Trait {
|
||||
public var mirrorX = false;
|
||||
public var showGrid = false;
|
||||
public var autoFillHandle = new Zui.Handle({selected: false});
|
||||
var newConfirm = false;
|
||||
var newObject = 0;
|
||||
var newObjectNames = ["Cube", "Plane", "Sphere", "Cylinder"];
|
||||
|
||||
var sub = 0;
|
||||
var vec2 = new iron.math.Vec4();
|
||||
@@ -1317,8 +1321,7 @@ void main() {
|
||||
UINodes.inst.parseMeshMaterial();
|
||||
hwnd.redraws = 2;
|
||||
ddirty = 2;
|
||||
// Auto-disable on brush change
|
||||
autoFillHandle.selected = false;
|
||||
autoFillHandle.selected = false; // Auto-disable
|
||||
}
|
||||
|
||||
function selectObject(o:iron.object.Object) {
|
||||
@@ -1865,8 +1868,10 @@ void main() {
|
||||
if (layers.length < 2) {
|
||||
selectedLayer = new LayerSlot();
|
||||
layers.push(selectedLayer);
|
||||
ui.g.end();
|
||||
UINodes.inst.parseMeshMaterial();
|
||||
UINodes.inst.parsePaintMaterial();
|
||||
ui.g.begin(false);
|
||||
ddirty = 2;
|
||||
iron.App.notifyOnRender(clearLastLayer);
|
||||
}
|
||||
@@ -1992,17 +1997,34 @@ void main() {
|
||||
ui.button("Save..");
|
||||
ui.button("Save As..");
|
||||
ui.row([1/2,1/2]);
|
||||
if (ui.button("New")) {
|
||||
// currentObject.data.delete();
|
||||
// iron.data.Data.cachedMeshes.remove("mesh_Cube");
|
||||
iron.data.Data.getMesh("mesh_Cube", "Cube", function(md:MeshData) {
|
||||
iron.App.notifyOnRender(initLayers);
|
||||
if (paintHeight) iron.App.notifyOnRender(initHeightLayer);
|
||||
// currentObject.setData(md);
|
||||
paintObject = currentObject;
|
||||
});
|
||||
if (newConfirm) {
|
||||
if (ui.button("Confirm")) {
|
||||
newConfirm = false;
|
||||
var n = newObjectNames[newObject];
|
||||
iron.data.Data.getMesh("mesh_" + n, n, function(md:MeshData) {
|
||||
currentObject.setData(md);
|
||||
paintObject = currentObject;
|
||||
ui.g.end();
|
||||
materials = [new MaterialSlot()];
|
||||
selectedMaterial = materials[0];
|
||||
layers = [new LayerSlot()];
|
||||
selectedLayer = layers[0];
|
||||
iron.App.notifyOnRender(initLayers);
|
||||
if (paintHeight) iron.App.notifyOnRender(initHeightLayer);
|
||||
UINodes.inst.updateCanvasMap();
|
||||
UINodes.inst.parsePaintMaterial();
|
||||
makeMaterialPreview();
|
||||
ui.g.begin(false);
|
||||
assets = [];
|
||||
assetNames = [];
|
||||
assetId = 0;
|
||||
});
|
||||
}
|
||||
}
|
||||
ui.combo(Id.handle(), ["Cube", "Plane", "Sphere", "Cylinder"], "Default Object");
|
||||
else if (ui.button("New")) {
|
||||
newConfirm = true;
|
||||
}
|
||||
newObject = ui.combo(Id.handle(), newObjectNames, "Default Object");
|
||||
}
|
||||
|
||||
if (ui.panel(Id.handle({selected: true}), "Quality", 1)) {
|
||||
@@ -2326,15 +2348,35 @@ void main() {
|
||||
var hsupersample = Id.handle({position: getSuperSampleQuality(apconfig.rp_supersample)});
|
||||
if (ui.panel(Id.handle({selected: true}), "Viewport", 1)) {
|
||||
apconfig.window_vsync = ui.check(Id.handle({selected: apconfig.window_vsync}), "VSync");
|
||||
var drawWorldHandle = Id.handle({selected: drawWorld});
|
||||
drawWorld = ui.check(drawWorldHandle, "Envmap");
|
||||
var drawWorldHandle = Id.handle({selected: true});
|
||||
var drawWorld = ui.check(drawWorldHandle, "Envmap");
|
||||
if (drawWorldHandle.changed) {
|
||||
ddirty = 2;
|
||||
}
|
||||
if (savedEnvmap == null) savedEnvmap = iron.Scene.active.world.envmap;
|
||||
if (!drawWorld) {
|
||||
var hwheel = Id.handle();
|
||||
worldColor = Ext.colorWheel(ui, hwheel);
|
||||
var hwheel = Id.handle({color: 0xff030303});
|
||||
var worldColor:kha.Color = Ext.colorWheel(ui, hwheel);
|
||||
if (emptyEnvmap == null) {
|
||||
var b = haxe.io.Bytes.alloc(4);
|
||||
b.set(0, worldColor.Rb);
|
||||
b.set(1, worldColor.Gb);
|
||||
b.set(2, worldColor.Bb);
|
||||
b.set(3, 255);
|
||||
emptyEnvmap = kha.Image.fromBytes(b, 1, 1);
|
||||
}
|
||||
if (hwheel.changed) {
|
||||
var b = emptyEnvmap.lock();
|
||||
b.set(0, worldColor.Rb);
|
||||
b.set(1, worldColor.Gb);
|
||||
b.set(2, worldColor.Bb);
|
||||
emptyEnvmap.unlock();
|
||||
ddirty = 2;
|
||||
}
|
||||
|
||||
iron.Scene.active.world.envmap = emptyEnvmap;
|
||||
}
|
||||
else iron.Scene.active.world.envmap = savedEnvmap;
|
||||
ui.check(hssgi, "SSAO");
|
||||
ui.check(hssr, "SSR");
|
||||
ui.check(hbloom, "Bloom");
|
||||
|
||||
@@ -85,7 +85,7 @@ void main() {
|
||||
if (!show) return;
|
||||
if (arm.App.realw() == 0 || arm.App.realh() == 0) return;
|
||||
|
||||
if (UITrait.inst.paintDirty()) hwnd.redraws = 2;
|
||||
if (UITrait.inst.pdirty >= 0) hwnd.redraws = 2; // Paint was active
|
||||
|
||||
var tw = iron.App.w() * 0.95;
|
||||
var tx = iron.App.w() / 2 - tw / 2;
|
||||
|
||||
@@ -685,11 +685,7 @@ class RenderPathDeferred {
|
||||
}
|
||||
#else
|
||||
{
|
||||
// Paint
|
||||
// path.clearTarget(null, 1.0);
|
||||
if (!UITrait.drawWorld) path.clearTarget(UITrait.worldColor, 1.0);
|
||||
else path.clearTarget(null, 1.0);
|
||||
//
|
||||
path.clearTarget(null, 1.0);
|
||||
}
|
||||
#end
|
||||
|
||||
@@ -971,10 +967,7 @@ class RenderPathDeferred {
|
||||
|
||||
#if (rp_background == "World")
|
||||
{
|
||||
// Paint
|
||||
// path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
if (UITrait.drawWorld) path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
//
|
||||
path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
}
|
||||
#end
|
||||
|
||||
@@ -1281,8 +1274,7 @@ class RenderPathDeferred {
|
||||
}
|
||||
#else
|
||||
{
|
||||
if (!UITrait.drawWorld) path.clearTarget(UITrait.worldColor, 1.0);
|
||||
else path.clearTarget(null, 1.0);
|
||||
path.clearTarget(null, 1.0);
|
||||
}
|
||||
#end
|
||||
|
||||
@@ -1326,7 +1318,7 @@ class RenderPathDeferred {
|
||||
|
||||
#if (rp_background == "World")
|
||||
{
|
||||
if (UITrait.drawWorld) path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
}
|
||||
#end
|
||||
|
||||
@@ -1414,8 +1406,7 @@ class RenderPathDeferred {
|
||||
}
|
||||
#else
|
||||
{
|
||||
if (!UITrait.drawWorld) path.clearTarget(UITrait.worldColor, 1.0);
|
||||
else path.clearTarget(null, 1.0);
|
||||
path.clearTarget(null, 1.0);
|
||||
}
|
||||
#end
|
||||
|
||||
@@ -1459,7 +1450,7 @@ class RenderPathDeferred {
|
||||
|
||||
#if (rp_background == "World")
|
||||
{
|
||||
if (UITrait.drawWorld) path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
path.drawSkydome("shader_datas/world_pass/world_pass");
|
||||
}
|
||||
#end
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user