This commit is contained in:
Tanasart 2024-10-05 07:49:33 +07:00
parent 423b9655f3
commit 86ce836d68
31 changed files with 352 additions and 28 deletions

View file

@ -20,7 +20,6 @@
{"name":"camera","order":7,"path":"folders/functions/3d/camera.yy",},
{"name":"gizmo","order":8,"path":"folders/functions/3d/gizmo.yy",},
{"name":"light","order":9,"path":"folders/functions/3d/light.yy",},
{"name":"mesh","order":10,"path":"folders/functions/3d/mesh.yy",},
{"name":"util","order":11,"path":"folders/functions/3d/util.yy",},
{"name":"dynaSurf","order":20,"path":"folders/functions/draw/dynaSurf.yy",},
{"name":"API","order":5,"path":"folders/functions/smokesim/API.yy",},
@ -42,6 +41,7 @@
{"name":"d3d_compose","order":3,"path":"folders/nodes/data/3D/d3d_compose.yy",},
{"name":"d3d_light","order":4,"path":"folders/nodes/data/3D/d3d_light.yy",},
{"name":"d3d_mesh","order":5,"path":"folders/nodes/data/3D/d3d_mesh.yy",},
{"name":"mesh","order":11,"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",},
{"name":"d3d_modifier","order":6,"path":"folders/nodes/data/3D/d3d_modifier.yy",},
{"name":"d3d_particle","order":7,"path":"folders/nodes/data/3D/d3d_particle.yy",},
{"name":"raymarching","order":13,"path":"folders/nodes/data/3D/raymarching.yy",},
@ -502,6 +502,7 @@
{"name":"d3d_scene","order":2,"path":"scripts/d3d_scene/d3d_scene.yy",},
{"name":"d3d_surface_extrude","order":7,"path":"scripts/d3d_surface_extrude/d3d_surface_extrude.yy",},
{"name":"d3d_terrain","order":8,"path":"scripts/d3d_terrain/d3d_terrain.yy",},
{"name":"d3d_torus","order":11,"path":"scripts/d3d_torus/d3d_torus.yy",},
{"name":"d3d_transformation","order":12,"path":"scripts/d3d_transformation/d3d_transformation.yy",},
{"name":"d3d_uvsphere","order":3,"path":"scripts/d3d_uvsphere/d3d_uvsphere.yy",},
{"name":"d3d_vertex","order":10,"path":"scripts/d3d_vertex/d3d_vertex.yy",},
@ -698,6 +699,7 @@
{"name":"node_3d_mesh_sphere_uv","order":4,"path":"scripts/node_3d_mesh_sphere_uv/node_3d_mesh_sphere_uv.yy",},
{"name":"node_3d_mesh_stack_slice","order":7,"path":"scripts/node_3d_mesh_stack_slice/node_3d_mesh_stack_slice.yy",},
{"name":"node_3d_mesh_terrain","order":9,"path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},
{"name":"node_3d_mesh_torus","order":12,"path":"scripts/node_3d_mesh_torus/node_3d_mesh_torus.yy",},
{"name":"node_3d_point_affector","order":11,"path":"scripts/node_3d_point_affector/node_3d_point_affector.yy",},
{"name":"node_3d_repeat","order":1,"path":"scripts/node_3d_repeat/node_3d_repeat.yy",},
{"name":"node_3d_round_vertex","order":1,"path":"scripts/node_3d_round_vertex/node_3d_round_vertex.yy",},
@ -2033,6 +2035,7 @@
{"name":"s_node_3d_sphere_uv","order":16,"path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},
{"name":"s_node_3d_sphere","order":8,"path":"sprites/s_node_3d_sphere/s_node_3d_sphere.yy",},
{"name":"s_node_3d_stack_slice","order":32,"path":"sprites/s_node_3d_stack_slice/s_node_3d_stack_slice.yy",},
{"name":"s_node_3d_torus","order":35,"path":"sprites/s_node_3d_torus/s_node_3d_torus.yy",},
{"name":"s_node_3d_transform_scene","order":22,"path":"sprites/s_node_3d_transform_scene/s_node_3d_transform_scene.yy",},
{"name":"s_node_3d_transform","order":4,"path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",},
{"name":"s_node_ace","order":61,"path":"sprites/s_node_ace/s_node_ace.yy",},

View file

@ -56,7 +56,6 @@
{"$GMFolder":"","%Name":"camera","folderPath":"folders/functions/3d/camera.yy","name":"camera","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"gizmo","folderPath":"folders/functions/3d/gizmo.yy","name":"gizmo","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"light","folderPath":"folders/functions/3d/light.yy","name":"light","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"mesh","folderPath":"folders/functions/3d/mesh.yy","name":"mesh","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"util","folderPath":"folders/functions/3d/util.yy","name":"util","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"action","folderPath":"folders/functions/action.yy","name":"action","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"animation","folderPath":"folders/functions/animation.yy","name":"animation","resourceType":"GMFolder","resourceVersion":"2.0",},
@ -130,6 +129,7 @@
{"$GMFolder":"","%Name":"d3d_compose","folderPath":"folders/nodes/data/3D/d3d_compose.yy","name":"d3d_compose","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"d3d_light","folderPath":"folders/nodes/data/3D/d3d_light.yy","name":"d3d_light","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"d3d_mesh","folderPath":"folders/nodes/data/3D/d3d_mesh.yy","name":"d3d_mesh","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"mesh","folderPath":"folders/nodes/data/3D/d3d_mesh/mesh.yy","name":"mesh","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"d3d_modifier","folderPath":"folders/nodes/data/3D/d3d_modifier.yy","name":"d3d_modifier","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"d3d_particle","folderPath":"folders/nodes/data/3D/d3d_particle.yy","name":"d3d_particle","resourceType":"GMFolder","resourceVersion":"2.0",},
{"$GMFolder":"","%Name":"raymarching","folderPath":"folders/nodes/data/3D/raymarching.yy","name":"raymarching","resourceType":"GMFolder","resourceVersion":"2.0",},
@ -1013,6 +1013,7 @@
{"id":{"name":"d3d_scene","path":"scripts/d3d_scene/d3d_scene.yy",},},
{"id":{"name":"d3d_surface_extrude","path":"scripts/d3d_surface_extrude/d3d_surface_extrude.yy",},},
{"id":{"name":"d3d_terrain","path":"scripts/d3d_terrain/d3d_terrain.yy",},},
{"id":{"name":"d3d_torus","path":"scripts/d3d_torus/d3d_torus.yy",},},
{"id":{"name":"d3d_transformation","path":"scripts/d3d_transformation/d3d_transformation.yy",},},
{"id":{"name":"d3d_uvsphere","path":"scripts/d3d_uvsphere/d3d_uvsphere.yy",},},
{"id":{"name":"d3d_vertex","path":"scripts/d3d_vertex/d3d_vertex.yy",},},
@ -1240,6 +1241,7 @@
{"id":{"name":"node_3d_mesh_sphere_uv","path":"scripts/node_3d_mesh_sphere_uv/node_3d_mesh_sphere_uv.yy",},},
{"id":{"name":"node_3d_mesh_stack_slice","path":"scripts/node_3d_mesh_stack_slice/node_3d_mesh_stack_slice.yy",},},
{"id":{"name":"node_3d_mesh_terrain","path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},},
{"id":{"name":"node_3d_mesh_torus","path":"scripts/node_3d_mesh_torus/node_3d_mesh_torus.yy",},},
{"id":{"name":"node_3d_particle","path":"scripts/node_3d_particle/node_3d_particle.yy",},},
{"id":{"name":"node_3d_point_affector","path":"scripts/node_3d_point_affector/node_3d_point_affector.yy",},},
{"id":{"name":"node_3d_repeat","path":"scripts/node_3d_repeat/node_3d_repeat.yy",},},
@ -2748,6 +2750,7 @@
{"id":{"name":"s_node_3d_sphere_uv","path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},},
{"id":{"name":"s_node_3d_sphere","path":"sprites/s_node_3d_sphere/s_node_3d_sphere.yy",},},
{"id":{"name":"s_node_3d_stack_slice","path":"sprites/s_node_3d_stack_slice/s_node_3d_stack_slice.yy",},},
{"id":{"name":"s_node_3d_torus","path":"sprites/s_node_3d_torus/s_node_3d_torus.yy",},},
{"id":{"name":"s_node_3d_transform_scene","path":"sprites/s_node_3d_transform_scene/s_node_3d_transform_scene.yy",},},
{"id":{"name":"s_node_3d_transform","path":"sprites/s_node_3d_transform/s_node_3d_transform.yy",},},
{"id":{"name":"s_node_9patch","path":"sprites/s_node_9patch/s_node_9patch.yy",},},

View file

@ -6,7 +6,7 @@
"name":"d3d_cone",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_cube",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_cube_faces",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_cylinder",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_cylinder_nocaps",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_icosphere",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -5,6 +5,8 @@ function __d3dMaterial(surface = noone) constructor {
specular = 0;
metalic = false;
shine = 1;
texScale = [ 1, 1 ];
texShift = [ 0, 0 ];
normal = noone;
normalStr = 1;
@ -28,6 +30,8 @@ function __d3dMaterial(surface = noone) constructor {
shader_set_f("mat_specular", specular );
shader_set_f("mat_shine", shine );
shader_set_i("mat_metalic", metalic );
shader_set_f("mat_texScale", texScale );
shader_set_f("mat_texShift", texShift );
shader_set_f("mat_reflective", reflective);
gpu_set_tex_filter(texFilter);

View file

@ -174,14 +174,13 @@ function __3dObject() constructor {
shader_set_f("mat_shine", 1);
shader_set_i("mat_metalic", 0);
shader_set_f("mat_reflective", 0);
shader_set_f("mat_texScale", [ 1, 1 ] );
}
vertex_submit(VB[i], render_type, _tex);
} else if(_shader == sh_d3d_geometry) {
if(_useMat)
_mat.submitGeometry();
else
shader_set_i("use_normal", 0);
if(_useMat) _mat.submitGeometry();
else shader_set_i("use_normal", 0);
vertex_submit(VB[i], render_type, _tex);
} else

View file

@ -6,7 +6,7 @@
"name":"d3d_path_extrude",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_plane_mesh",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_surface_extrude",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -6,7 +6,7 @@
"name":"d3d_terrain",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -0,0 +1,113 @@
function __3dTorus(radT = 1, radP = .2, sideT = 16, sideP = 8, smooth = false) : __3dObject() constructor {
VF = global.VF_POS_NORM_TEX_COL;
render_type = pr_trianglelist;
object_counts = 1;
self.radT = radT;
self.radP = radP;
self.sideT = sideT;
self.sideP = sideP;
self.smooth = smooth;
angT = 0;
angP = 0;
static initModel = function() {
var vs = []//array_create(sideT * sideP * 2);
var ix = 0;
for( var i = 0; i < sideT; i++ ) {
var aT0 = (i + 0) / sideT * 360 + angT;
var aT1 = (i + 1) / sideT * 360 + angT;
var _lt0_x = lengthdir_x(1, aT0);
var _lt0_y = lengthdir_y(1, aT0);
var _lt1_x = lengthdir_x(1, aT1);
var _lt1_y = lengthdir_y(1, aT1);
var xT0 = _lt0_x * radT;
var yT0 = _lt0_y * radT;
var xT1 = _lt1_x * radT;
var yT1 = _lt1_y * radT;
for( var j = 0; j < sideP; j++ ) {
var aP0 = (j + 0) / sideP * 360 + angP;
var aP1 = (j + 1) / sideP * 360 + angP;
var xP0 = lengthdir_x(radP, aP0);
var xP1 = lengthdir_x(radP, aP1);
var x0 = _lt0_x * (radT + xP0);
var y0 = _lt0_y * (radT + xP0);
var z0 = lengthdir_y(radP, aP0);
var x1 = _lt1_x * (radT + xP0);
var y1 = _lt1_y * (radT + xP0);
var z1 = z0;
var x2 = _lt1_x * (radT + xP1);
var y2 = _lt1_y * (radT + xP1);
var z2 = lengthdir_y(radP, aP1);
var x3 = _lt0_x * (radT + xP1);
var y3 = _lt0_y * (radT + xP1);
var z3 = z2;
var ux0 = 1 - (i + 0) / sideT;
var ux1 = 1 - (i + 1) / sideT;
var uy0 = 1 - (j + 0) / sideP;
var uy1 = 1 - (j + 1) / sideP;
if(smooth) {
var nx0 = x0 - xT0;
var ny0 = y0 - yT0;
var nz0 = z0;
var nx1 = x1 - xT1;
var ny1 = y1 - yT1;
var nz1 = z1;
var nx2 = x2 - xT1;
var ny2 = y2 - yT1;
var nz2 = z2;
var nx3 = x3 - xT0;
var ny3 = y3 - yT0;
var nz3 = z3;
} else {
var nx0 = (x0 + x1 + x2 + x3) / 4 - (xT0 + xT1) / 2;
var ny0 = (y0 + y1 + y2 + y3) / 4 - (yT0 + yT1) / 2;
var nz0 = (z0 + z1 + z2 + z3) / 4;
var nx1 = nx0;
var ny1 = ny0;
var nz1 = nz0;
var nx2 = nx0;
var ny2 = ny0;
var nz2 = nz0;
var nx3 = nx0;
var ny3 = ny0;
var nz3 = nz0;
}
vs[ix++] = new __vertex(x0, y0, z0).setNormal(nx0, ny0, nz0).setUV(ux0, uy0);
vs[ix++] = new __vertex(x2, y2, z2).setNormal(nx2, ny2, nz2).setUV(ux1, uy1);
vs[ix++] = new __vertex(x1, y1, z1).setNormal(nx1, ny1, nz1).setUV(ux1, uy0);
vs[ix++] = new __vertex(x0, y0, z0).setNormal(nx0, ny0, nz0).setUV(ux0, uy0);
vs[ix++] = new __vertex(x3, y3, z3).setNormal(nx3, ny3, nz3).setUV(ux0, uy1);
vs[ix++] = new __vertex(x2, y2, z2).setNormal(nx2, ny2, nz2).setUV(ux1, uy1);
}
}
vertex = [ vs ];
VB = build();
}
initModel();
static onParameterUpdate = initModel;
}

View file

@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"d3d_torus",
"isCompatibility":false,
"isDnD":false,
"name":"d3d_torus",
"parent":{
"name":"mesh",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View file

@ -6,7 +6,7 @@
"name":"d3d_uvsphere",
"parent":{
"name":"mesh",
"path":"folders/functions/3d/mesh.yy",
"path":"folders/nodes/data/3D/d3d_mesh/mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",

View file

@ -39,7 +39,7 @@
globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER, LATEST_VERSION;
globalvar HOTKEYS, HOTKEY_CONTEXT;
LATEST_VERSION = 1_18_00;
LATEST_VERSION = 1_18_00_0;
VERSION = 1_18_01_0;
SAVE_VERSION = 1_18_00_0;
VERSION_STRING = MAC? "1.18.003m" : "1.18.1.004";

View file

@ -25,11 +25,16 @@ function Node_3D_Material(_x, _y, _group = noone) : Node_3D(_x, _y, _group) cons
newInput(8, nodeValue_Bool("Anti aliasing", self, false ));
newInput(9, nodeValue_Vec2("Scale", self, [ 1, 1 ] ));
newInput(10, nodeValue_Vec2("Shift", self, [ 0, 0 ] ));
newOutput(0, nodeValue_Output("Material", self, VALUE_TYPE.d3Material, noone));
input_display_list = [ 0, 8,
input_display_list = [
["Texture", false], 0, 8, 9, 10,
["Properties", false], 1, 2, 3, 4, 7,
["Normal", false], 5, 6,
["Normal", false], 5, 6,
];
static processData = function(_output, _data, _output_index, _array_index = 0) {
@ -42,6 +47,8 @@ function Node_3D_Material(_x, _y, _group = noone) : Node_3D(_x, _y, _group) cons
var _norS = _data[6];
var _roug = _data[7];
var _aa = _data[8];
var _scal = _data[9];
var _shft = _data[10];
if(!is_surface(_surf)) {
solid_surf = surface_verify(solid_surf, 1, 1);
@ -54,6 +61,8 @@ function Node_3D_Material(_x, _y, _group = noone) : Node_3D(_x, _y, _group) cons
_mat.shine = _shin;
_mat.metalic = _metl;
_mat.texFilter = _aa;
_mat.texScale = _scal;
_mat.texShift = _shft;
_mat.normal = _nor;
_mat.normalStr = _norS;

View file

@ -15,9 +15,9 @@ function Node_3D_Mesh_Cone(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group
newInput(in_mesh + 3, nodeValue_Bool("Smooth Side", self, false ));
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 3,
__d3d_input_list_mesh, in_mesh + 0,
__d3d_input_list_transform,
["Material", false], in_mesh + 1, in_mesh + 2,
["Material", false], in_mesh + 3, in_mesh + 1, in_mesh + 2,
]
static processData = function(_output, _data, _output_index, _array_index = 0) { #region

View file

@ -20,9 +20,9 @@ function Node_3D_Mesh_Cylinder(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _g
newInput(in_mesh + 5, nodeValue_Bool("End caps", self, true ));
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 4, in_mesh + 5,
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 5,
__d3d_input_list_transform,
["Material", false], in_mesh + 1, in_mesh + 2, in_mesh + 3,
["Material", false], in_mesh + 4, in_mesh + 1, in_mesh + 2, in_mesh + 3,
]
static step = function() { #region

View file

@ -12,9 +12,9 @@ function Node_3D_Mesh_Sphere_Ico(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y,
newInput(in_mesh + 2, nodeValue_Bool("Smooth Normal", self, false ));
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 2,
__d3d_input_list_mesh, in_mesh + 0,
__d3d_input_list_transform,
["Material", false], in_mesh + 1,
["Material", false], in_mesh + 2, in_mesh + 1,
]
static processData = function(_output, _data, _output_index, _array_index = 0) { #region

View file

@ -15,9 +15,9 @@ function Node_3D_Mesh_Sphere_UV(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _
newInput(in_mesh + 3, nodeValue_Bool("Smooth Normal", self, false ));
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 1, in_mesh + 3,
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 1,
__d3d_input_list_transform,
["Material", false], in_mesh + 2,
["Material", false], in_mesh + 3, in_mesh + 2,
]
static processData = function(_output, _data, _output_index, _array_index = 0) { #region

View file

@ -0,0 +1,61 @@
function Node_3D_Mesh_Torus(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) constructor {
name = "3D torus";
object_class = __3dTorus;
newInput(in_mesh + 0, nodeValue_Int("Toroidal Slices", self, 16 ))
.setValidator(VV_min(3));
newInput(in_mesh + 1, nodeValue_Int("Poloidal Slices", self, 8 ))
.setValidator(VV_min(3));
newInput(in_mesh + 2, nodeValue_Float("Toroidal Radius", self, 1 ));
newInput(in_mesh + 3, nodeValue_Float("Poloidal Radius", self, .2 ))
.setDisplay(VALUE_DISPLAY.slider);
newInput(in_mesh + 4, nodeValue_D3Material("Material", self, new __d3dMaterial()))
.setVisible(true, true);
newInput(in_mesh + 5, nodeValue_Bool("Smooth Normal", self, false ));
newInput(in_mesh + 6, nodeValue_Rotation("Toroidal Angle", self, 0 ));
newInput(in_mesh + 7, nodeValue_Rotation("Poloidal Angle", self, 0 ));
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 1, in_mesh + 2, in_mesh + 3, in_mesh + 6, in_mesh + 7,
__d3d_input_list_transform,
["Material", false], in_mesh + 5, in_mesh + 4,
]
static processData = function(_output, _data, _output_index, _array_index = 0) {
var _sideT = _data[in_mesh + 0];
var _sideP = _data[in_mesh + 1];
var _radT = _data[in_mesh + 2];
var _radP = _data[in_mesh + 3];
var _angT = _data[in_mesh + 6];
var _angP = _data[in_mesh + 7];
var _smt = _data[in_mesh + 5];
var _mat = _data[in_mesh + 4];
var object = getObject(_array_index);
object.checkParameter({
sideT : _sideT,
sideP : _sideP,
radT : _radT,
radP : _radP,
angT : _angT,
angP : _angP,
smooth : _smt,
});
object.materials = [ _mat ];
setTransform(object, _data);
return object;
}
static getPreviewValues = function() { return getSingleValue(in_mesh + 4); }
}

View file

@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"node_3d_mesh_torus",
"isCompatibility":false,
"isDnD":false,
"name":"node_3d_mesh_torus",
"parent":{
"name":"d3d_mesh",
"path":"folders/nodes/data/3D/d3d_mesh.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View file

@ -0,0 +1,12 @@
{
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "variable",
"path": "folders/nodes/data/variable.yy",
},
"resourceVersion": "1.0",
"name": "node_counter",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -703,6 +703,7 @@ function __initNodes() {
addNodeObject(d3d, "3D UV Sphere", s_node_3d_sphere_uv, "Node_3D_Mesh_Sphere_UV", [1, Node_3D_Mesh_Sphere_UV]).setVersion(11510);
addNodeObject(d3d, "3D Icosphere", s_node_3d_sphere_ico, "Node_3D_Mesh_Sphere_Ico", [1, Node_3D_Mesh_Sphere_Ico]).setVersion(11510);
addNodeObject(d3d, "3D Cone", s_node_3d_cone, "Node_3D_Mesh_Cone", [1, Node_3D_Mesh_Cone]).setVersion(11510);
addNodeObject(d3d, "3D Torus", s_node_3d_torus, "Node_3D_Mesh_Torus", [1, Node_3D_Mesh_Torus]).setVersion(1_18_01_0);
addNodeObject(d3d, "3D Terrain", s_node_3d_displace, "Node_3D_Mesh_Terrain", [1, Node_3D_Mesh_Terrain],, "Create 3D terrain from height map.").setVersion(11560);
addNodeObject(d3d, "Surface Extrude", s_node_3d_extrude, "Node_3D_Mesh_Extrude", [1, Node_3D_Mesh_Extrude],, "Extrude 2D image into 3D object.").setVersion(11510);
addNodeObject(d3d, "Path Extrude", s_node_3d_path_extrude, "Node_3D_Mesh_Path_Extrude",[1, Node_3D_Mesh_Path_Extrude],, "Extrude path into 3D object.").setVersion(11750);

View file

@ -65,6 +65,8 @@ uniform int use_8bit;
uniform float mat_shine;
uniform int mat_metalic;
uniform float mat_reflective;
uniform vec2 mat_texScale;
uniform vec2 mat_texShift;
uniform int mat_defer_normal;
uniform float mat_normal_strength;
@ -174,6 +176,7 @@ void main() {
vec2 uv_coord = v_vTexcoord;
if(mat_flip == 1) uv_coord.y = -uv_coord.y;
uv_coord = fract(uv_coord * mat_texScale + mat_texShift);
mat_baseColor = texture2D( gm_BaseTexture, uv_coord );
mat_baseColor *= v_vColour;

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -0,0 +1,90 @@
{
"$GMSprite":"",
"%Name":"s_node_3d_torus",
"bboxMode":0,
"bbox_bottom":52,
"bbox_left":1,
"bbox_right":62,
"bbox_top":11,
"collisionKind":1,
"collisionTolerance":0,
"DynamicTexturePage":false,
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"503138db-2536-496a-b5cc-51e32ad597e3","name":"503138db-2536-496a-b5cc-51e32ad597e3","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"4e9d715f-43f0-4ffd-a842-0e4d79699ee0","blendMode":0,"displayName":"default","isLocked":false,"name":"4e9d715f-43f0-4ffd-a842-0e4d79699ee0","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_3d_torus",
"nineSlice":null,
"origin":4,
"parent":{
"name":"3D",
"path":"folders/nodes/icons/3D.yy",
},
"preMultiplyAlpha":false,
"resourceType":"GMSprite",
"resourceVersion":"2.0",
"sequence":{
"$GMSequence":"",
"%Name":"s_node_3d_torus",
"autoRecord":true,
"backdropHeight":768,
"backdropImageOpacity":0.5,
"backdropImagePath":"",
"backdropWidth":1366,
"backdropXOffset":0.0,
"backdropYOffset":0.0,
"events":{
"$KeyframeStore<MessageEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MessageEventKeyframe>",
"resourceVersion":"2.0",
},
"eventStubScript":null,
"eventToFunction":{},
"length":1.0,
"lockOrigin":false,
"moments":{
"$KeyframeStore<MomentsEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
"resourceVersion":"2.0",
},
"name":"s_node_3d_torus",
"playback":1,
"playbackSpeed":30.0,
"playbackSpeedType":0,
"resourceType":"GMSequence",
"resourceVersion":"2.0",
"showBackdrop":true,
"showBackdropImage":false,
"timeUnits":1,
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"503138db-2536-496a-b5cc-51e32ad597e3","path":"sprites/s_node_3d_torus/s_node_3d_torus.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"94d991bf-2ece-4ef4-af43-db030f5742a2","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,
"volume":1.0,
"xorigin":32,
"yorigin":32,
},
"swatchColours":null,
"swfPrecision":0.5,
"textureGroupId":{
"name":"Default",
"path":"texturegroups/Default",
},
"type":0,
"VTile":false,
"width":64,
}