mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-11-14 06:23:55 +01:00
84 lines
2.1 KiB
Plaintext
84 lines
2.1 KiB
Plaintext
function dynaSurf_3d() : dynaSurf() constructor {
|
|
object = noone;
|
|
|
|
camera = new __3dCamera();
|
|
camTarget = new __vec3();
|
|
camera_ay = 45;
|
|
|
|
scene = new __3dScene(camera);
|
|
|
|
w = 1;
|
|
h = 1;
|
|
|
|
surfaces = array_create(4);
|
|
deferData = noone;
|
|
|
|
static getWidth = function() { return w; }
|
|
static getHeight = function() { return h; }
|
|
|
|
static draw = function(_x = 0, _y = 0, _xs = 1, _ys = 1, _rot = 0, _col = c_white, _alp = 1) {
|
|
var _sw = w * _xs;
|
|
var _sh = h * _xs;
|
|
|
|
#region view
|
|
var _pos, _blend = 1;
|
|
|
|
_pos = calculate_3d_position(camTarget.x, camTarget.y, camTarget.z, _rot, camera_ay, camera.focus_dist);
|
|
|
|
camera.position.set(_pos);
|
|
camera.focus.set(camTarget);
|
|
|
|
camera.setViewSize(_sw, _sh);
|
|
camera.setMatrix();
|
|
#endregion
|
|
|
|
#region background
|
|
//surface_free_safe(surfaces[0]);
|
|
//surfaces[0] = scene.renderBackground(_sw, _sh, surfaces[0]);
|
|
#endregion
|
|
|
|
#region surfaces
|
|
surfaces[1] = surface_verify(surfaces[1], _sw, _sh);
|
|
surfaces[2] = surface_verify(surfaces[2], _sw, _sh);
|
|
surfaces[3] = surface_verify(surfaces[3], _sw, _sh);
|
|
deferData = scene.deferPass(object, _sw, _sh, deferData);
|
|
#endregion
|
|
|
|
#region submit
|
|
var _px = point_rotate(0, 0, _sw / 2, _sh / 2, _rot);
|
|
var _xx = _x - _px[0];
|
|
var _yy = _y - _px[1];
|
|
|
|
surface_set_target_ext(0, surfaces[1]);
|
|
surface_set_target_ext(1, surfaces[2]);
|
|
surface_set_target_ext(2, surfaces[3]);
|
|
|
|
DRAW_CLEAR
|
|
|
|
camera.setMatrix();
|
|
scene.reset();
|
|
gpu_set_cullmode(cull_counterclockwise);
|
|
|
|
object.submitShader(scene);
|
|
object.submitShadow(scene, object);
|
|
scene.apply(deferData);
|
|
|
|
gpu_set_cullmode(cull_noculling);
|
|
surface_reset_target();
|
|
#endregion
|
|
|
|
#region draw
|
|
//if(scene.draw_background)
|
|
// draw_surface_safe(surfaces[0], _xx, _yy);
|
|
draw_surface_safe(surfaces[1], _xx, _yy);
|
|
|
|
BLEND_MULTIPLY
|
|
draw_surface_safe(deferData.ssao, _xx, _yy);
|
|
BLEND_NORMAL
|
|
#endregion
|
|
}
|
|
|
|
static drawTile = function(_x = 0, _y = 0, _xs = 1, _ys = 1, _col = c_white, _alp = 1) {}
|
|
|
|
static drawPart = function(_l, _t, _w, _h, _x, _y, _xs = 1, _ys = 1, _rot = 0, _col = c_white, _alp = 1) {}
|
|
} |