# All Activity

1. Past hour
2. ## white dragon finger paint

Hello, I took a look at this briefly. I'm not going to say your code is bad, (whoops) but could use some improvement. The area I would attack first is cleanliness. You are sloppy with your bracing. Case in point inside the function named writer... Here, the variable assignment to x may or may not happen depending the whatever n is supposed to be but y and z always get theirs.
3. ## Realtime raytracing on a 2014 GPU

It also seems like using some kind of temporal averaging is the key to trying to get more effective sampling out of limited hardware resources. In addition to the SVGF that was already mentioned, Nvidia did something similar in their 2-layer Deep G-Buffers.

5. ## game idea

You mentioned programming languages and said you were unsure of how to proceed. If you want feedback on a game concept, post it in Game Design and don't mention programming languages or production methodologies or other things unrelated to game design, and don't ask for advice about programming languages or how to code or anything unrelated to game design.
6. ## Quaternion to Euler very imprecise

That's a brilliant webpage .. shows exactly what is going on. His conversion to quaternion is using YXZ convention, and the conversion back to euler is using YZX convention I believe. If you convert back to euler using the same YXZ convention you get 45 degrees.
7. ## game idea

should I post in another forum, I want to get some feedback on my game idea.

9. Today
10. ## Quaternion to Euler very imprecise

https://www.andre-gaschler.com/rotationconverter/ What I'm observing from using this online converter, It appears that quaternion is indeed 45° on each axis but in the YXZ arrangement. The Euler's you get are partially confirmed but flipped Y and Z. Matching YXZ gives 45° Euler angles across the board. Perhaps that's a clue. edit: if I use your ZXY arrangement, then the input quaternion is (appears) incorrect.
11. ## Register a templated function?

I think AngelScript supports template types but not functions. Something similar could maybe be made by using output variable parameters (https://www.angelcode.com/angelscript/sdk/docs/manual/doc_adv_var_type.html)
12. ## Realtime raytracing on a 2014 GPU

That SSVDAG algorithm looks impressive, but doesn't look applicable to real-time techniques, as it doesn't look like you could construct an SSVDAG in real time. @spike1 - It won't make it faster, but hardware virtual-texture support could reduce the voxel memory requirements. The idea would be similar to sparse-virtual-shadow-maps, though it's probably not supported on the GTX 750 Ti in hardware. Maybe with a github source repo.. someone might collaborate and improve it, or someone else might find a practical use for the technique even with it's limitations.

14. ## Register a templated function?

Hi! I am having a hard time figuring out how to register a templated function. I read this page: http://www.angelcode.com/angelscript/sdk/docs/manual/doc_adv_template.html But it only seems to cover how to create a templated type with member functions (object behaviors). I saw this thread that has almost the same problem and usecase as me, in it one of the comments says that the following usage should be possible in AngelScript. Velocity@ vel = entity.getComponent<Velocity>(); But it doesn't go into any details on how to do this. It also suggests this syntax which I would prefer to avoid if possible, and yes I read the part about this having better performance. entity.getVelocity(); My most preferable usecase would be getComponent<Velocity>(entity); with entity.getComponent<Velocity>() as a close second. Is this even possible without a templated type? Could anyone show me a concrete example of registering a templated global function, preferable with specializations as well?
15. ## white dragon finger paint

This did not belong in Game Design (game design is not about programming). It's moved to a more appropriate forum.
16. ## white dragon finger paint

im trying to save file as file.x old microsoft style .x files this code writes but it comes out as an error i compiled it with visual c using glut i need to be able to both read and write .x files such as wdf.x <--- here is the code sorry about spaghetti code =========================================== #ifdef WIN32 #include <windows.h> #endif #if defined(__APPLE__) || defined(MACOSX) #include <OpenGL/gl.h> #include <OpenGL/glu.h> #include <GLUT/glut.h> #else #include <GL/gl.h> #include <GL/glu.h> #include <gl/glut.h> #endif #include <stdio.h> #include <stdlib.h> int xt,yt,zt =0.0f; int xtc =1.0; #define MAX_VERTS 900000 float angle = 0; float anglf = 0; float anglg = 0; float n =0.0; GLfloat z= -0.2f; GLfloat hl= 0.0f; GLfloat zm= -0.2f; GLfloat zp= 0.2f; GLuint mousex, mousey, mousez = 0; static GLfloat Scale = 0.0f; static int i= 2; int j= 2.0; static int numVerts = 2; static struct {GLfloat x, y, z;} verts[MAX_VERTS][2]; static GLboolean dragMouse = GL_FALSE; enum {X, Y, Z}; enum {NOLIST, PLANE}; /* display lists */ enum {VERTS}; /* load data structure from file */ enum {WRITE, END}; void reshape(int w, int h) { glViewport(0,0, w,h); glLoadIdentity(); glOrtho(0,w, h,0, -1,1); /* flip y-axis around */ glMatrixMode(GL_MODELVIEW); } // not used jmcd void glRotateAxis(void){ glTranslatef(0.0f,0.0f,0.0f); //glScalef(Scale, Scale, Scale); glRotatef(angle,0.0f,+1.0f,+1.0f); //on center rotation by jmcd glTranslatef(0.0f,0.0f,0.0f); } void glRotateAxisB(void){ glTranslatef(0.0f,0.0f,0.0f); //glScalef(Scale, Scale, Scale); glRotatef(angle,0.0f,-1.0f,-1.0f); //on center rotation by jmcd glTranslatef(0.0f,0.0f,0.0f); } void glScaleIt(void) { glScalef(Scale, Scale, Scale); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); /* clear frame buffer */ //glPointSize(3.0f); glColor3f(2.0, 7.0, 3.0); /* set current color to Pastashio Green */ glMatrixMode(GL_PROJECTION); //glTranslatef(0.0f,0.0f,0.0f); //glRotatef(angle,1.0f,1.0f,0.0f); //on center rotation by jmcd //glTranslatef(0.0f,0.0f,0.0f); //glRotatef(anglf,0.0f,1.0f,0.0f); //glRotatef(anglg,0.0f,0.0f,1.0f); //glRotatef(10-.01,0.0f, 1.0f, 0.0f); glBegin(GL_POINTS); //glBegin(GL_LINES); GL_POINTS if (numVerts > 1) { int i; for (i = 0; i < numVerts; i++) glVertex3d(verts[0].x, verts[0].y, verts[0].z); if(dragMouse) // numVerts++; i++; glVertex3f((GLfloat) verts[1].x=mousex, (GLfloat) verts[1].y=mousey, (GLfloat) verts[1].z=mousez); //glVertex3d(verts[1].x, verts[1].y, verts[1].z); //if(dragMouse == GL_TRUE) glEnd(); } glutPostRedisplay(); glFlush(); /* make sure all GL commands are executed */ } void writer(char *fname) { FILE *fp; GLfloat x, y, z ; int state = WRITE; int jtrig = 0.0; int i= 2.0; fp = fopen(fname, "wb"); if (!fp) { printf("can't open file %s\n", fname); } // glNewList(PLANE, GL_COMPILE); state = WRITE; while(!feof(fp)) { switch(state) { case WRITE: if (n == 0.0) x = verts[0].x; y = verts[0].y; z = verts[0].z; fprintf(fp, " %f %f %f", verts[0].x, verts[0].y, verts[0].z); printf ("xyz : %f.\n",x,y,z); printf ("numverts : %f.\n",numVerts); //printf(fp, " %f %f %f", verts[j][0].x, verts[j][0].y, verts[j][0].z); fprintf (fp, "%f \r\n",0); // j++; if(i == numVerts) state = END; i++; n= 1.0; break; if (n == 1.0) x = verts[1].x; y = verts[1].y; z = verts[1].z; fprintf(fp, " %f %f %f", verts[1].x, verts[1].y, verts[1].z); printf ("xyz : %f.\n",x,y,z); printf ("numverts : %f.\n",numVerts); //printf(fp, " %f %f %f", verts[j][0].x, verts[j][0].y, verts[j][0].z); fprintf (fp, "%f \r\n",0); // j++; if(i == numVerts) state = END; i++; n= 0.0; break; //fclose(fp); if(i < numVerts) state = WRITE; if (x == 0.0) fclose(fp); break; case END: fclose(fp); state = NULL; state = END; break; } } } void loader(char *fname) { FILE *fp; GLfloat x, y, z; int state = END; int read; n = 0; numVerts = 2.0; i = 2.0; fp = fopen(fname, "r"); if (!fp) { printf("can't open file %s\n", fname); exit(1); } // glNewList(PLANE, GL_COMPILE); state = VERTS; while(!feof(fp)) { switch(state) { case END: // read = fscanf(fp, ""); // if(read < 0) /* hit eof */ // break; state = VERTS; // glBegin(GL_LINE_STRIP); break; case VERTS: if( n = 0.0) fscanf(fp, " %f %f %f ", verts[0].x, verts[0].y, verts[0].z); // fscanf(fp, " %f %f %f", &x, &y, &z); printf("xyz : %f./n",verts[0].x,verts[0].y,verts[0].z); ////////////////////////////////////// printf("xyz : %f./n",x,y,z); ///// verts[0].x = x; verts[0].y = y; verts[0].z = z; // watch 148 n = 1.0; i++; // numVerts = i; if( n = 1.0) fscanf(fp, " %f %f %f ", verts[1].x, verts[1].y, verts[1].z); printf("xyz : %f./n",verts[0].x,verts[0].y,verts[0].z); ////////////////////////////////////// printf("xyz : %f./n",x,y,z); ///// verts[1].x = x; verts[1].y = y; verts[1].z = z; // watch 148 n = 0.0; i++; // numVerts = i; @@@@@@@@@@@@@@@@@@@@@JMCD NOW!!@@@@@@@@@@@@@@ if(x = 0.0); state = END; if (x !=0.0) state = VERTS; { // fscanf(fp, ""); //glEnd(); // state = END; } break; } } // glEndList(); fclose(fp); } void keyboard(unsigned char key, int x, int y) { switch (key){ case 'd': hl=zm; z= hl; glutPostRedisplay(); break; case 'f': hl=zp; z= hl; glutPostRedisplay(); break; case 'l': loader("./data/wdf.x"); glutPostRedisplay(); // glFlush(); break; case 'w': writer("./data/wdf.x"); glutPostRedisplay(); // glFlush(); break; case 'u': numVerts--; i--; printf("xyz : %d./n", x,y,z); glutPostRedisplay(); break; case 'c': hl=0.0f; z= hl; glutPostRedisplay(); break; break; case 's': numVerts=2; i=2; glutPostRedisplay(); break; case 'r': numVerts++; i++; printf("xyz: %d./n", x,y,z); glutPostRedisplay(); break; case 'p': Scale = 0.4f; glScaleIt(); break; case 'o': Scale += 0.4f; glScaleIt(); break; case 'a': angle += .001f; printf ("angle : %f.\n", angle); glRotateAxisB(); break; case 'z': angle += .001f; printf ("angle : %f.\n", angle); glRotateAxis(); //this whole thing is right, x below also all correct // glutPostRedisplay(); break; case 'x': angle -= .001f; glRotateAxis(); //glutPostRedisplay(); break; case 'k': angle -= .1; glRotatef(angle,1.0,0.0,0.0); glutPostRedisplay(); break; case 'y': angle += .1; glRotatef(angle,0.0,1.0,0.0); glutPostRedisplay(); break; case 'g': angle -= .1; glRotatef(angle,0.0,-1.0,0.0); glutPostRedisplay(); break; // case 'n': // numVerts--; //glutPostRedisplay(); /* request a redisplay */ // break; /* case 'q': case 'Q': exit(0); break;*/ } } void mouse(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) if (numVerts < MAX_VERTS) { dragMouse = GL_TRUE; // printf ("Mouse in play routine : %d,%d,%d.\n", x,y,z); //jmcd take out later !!! verts[0].x = x; verts[0].y = y; verts[0].z = hl; // watch 148 printf ("Index I: %d.\n", i); printf ("dragMouse : %d.\n", dragMouse); printf ("numVerts : %d.\n", numVerts); //jmcd jmk 1 printf ("hl : %f.\n", hl); printf ("z : %f.\n", z); if (xtc = 1.0) xt = verts[0].x; yt = verts[0].y; zt = verts[0].z; // fwrite(fp, " %f %f %f",xt,yt,zt); printf("xt : %i./n ", xt); printf("yt : %i./n ", yt); printf("zt : %i./n ", zt); xtc++; numVerts++; i++; glutPostRedisplay(); /* request a redisplay */ } } void mouseMotion(int x, int y) { if (GLUT_UP == TRUE) { dragMouse = GL_TRUE; if(dragMouse) { //dragmouse achieved at 11:40 AM //D //8:32 AM mousex = x; mousey = y; mousez = z; // glMatrixMode(GL_MODELVIEW); glutPostRedisplay(); } printf ("hl : %f.\n", hl); //glVertex3f((GLfloat) verts[0].x, (GLfloat) verts[0].y, (GLfloat) verts[0].z); //i++; } // glutPostRedisplay(); /* request a redisplay */ } #define ESC 27 //void keyboard(unsigned char key, int x, int y) {if (key == ESC) exit(0);} int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(500,500); glutInitWindowPosition(10,10); glutCreateWindow("Polyline Editor"); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMouseFunc(mouse); glutPassiveMotionFunc(mouseMotion); glutKeyboardFunc(keyboard); glClearColor(0.0, 0.0, 0.0, 1.0); glutMainLoop(); return 0; } thank you in advance sincerly JakePlow polyed3.c polyed3.dsp polyed3.plg
17. ## Vulkan Help with DXC lib_ and spirv

Hi, I am trying out Vulkan ray tracing extensions and I am at the point where I need to compile shaders. I usually use DXC to compile my shaders to Spir-V but I am having trouble understanding how to create a lib_6_3 shader. This is the shader I am trying to compile: struct Payload { float4 color; }; [shader("miss")] void main(inout Payload payload : SV_RayPayload) { payload.color = float4(0, 0, 0, 1); } I was trying to use the following command to compile it but it simply does not produce any output: dxc.exe -spirv -T lib_6_3 -fspv-target-env=vulkan1.1 miss_rt.hlsl -Fo miss.spv I a clearly missing some key detail here... Well, 3 mins after writing this post, I updated my version of DXC and now it works... False alarm! Cheers!
18. ## Quaternion to Euler very imprecise

I apologise as I didn't mean to offend, slightly off topic, but it is quite interesting linguistically this kind of thing, and often comes up with Euler angles: https://english.stackexchange.com/questions/315906/pronunciation-of-the-name-leonhard-euler It has some similarities to a 'borrowed word' from another language. Often the pronounciation will be changed to fit more easily with the language that adopts it .. see pidgin english for example. As well as the phonetic pronounciation being 'yooler' in english, there is a conflict with the word oil, and our existing word oiler, in which case it makes total sense to alter the pronounciation in english, otherwise you are relying on context for meaning. The counterargument of course, which has won in maths, is that as a name it should be preserved as spoken in the original language. But you can see there are valid arguments both ways. And of course languages are dynamic, evolving and subject to change, I believe pronounciation in english has changed greatly in the past few hundred years, compare the difference between american english and british english for example. You say tomato, I say tomato...
19. ## ScreenShotSaturday

Keeping up with the twitter hashtag of screen shots on Saturday!
20. ## Quaternion to Euler very imprecise

I tried my euler to quaternion and it gave a different result to yours. I checked and mine follows the convention on wikipedia: https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Source_Code which appears to follow heading, attitude, bank convention. The source you linked also claims to follow the same convention: https://www.euclideanspace.com/maths/standards/index.htm Yet the equations you use are different to that on wikipedia. I would include the code here but the code thing on the forum isn't working for me for some reason.
21. ## First Person Catcher!

Pony, kitten and bunny hanging out in front of the pink castle
22. ## Quaternion to Euler very imprecise

The problem is the imprecision is not little but very large... Puting a quaternion with 45 degrees on X, Y and Z gives this quaternion: The euler resulting from this quaternion is: Of course we are far from 45 degrees that we started but the visual result is almost the same but the Y angle is far. The "9.735610" on the Y axis should in reality be around 23 degrees. Up is the result of the Quaternion to Euler, Down is the reference 45 degrees on each axis. Used for the editor to show the euler angles to be artist friendly. But I begin to think that it should completely be avoided and do the calculation differently to get the good angles. - When the gizmo is used, instead of add another quaternion for the transform, surely the euler can be modified local and world space and then the quaternion can be created safely from these angles. - When you attach one object to another, the relative angles can surely be calculated safely too to have a good representation of the actual euler angles. It's actually the two cases where I use the quaternion to euler because I do quaternion operation then I set the new quaternion but of course then the eulers is computed by converting the quaternion to euler if you set a quaternion and not euler angles for the new rotation.
23. ## Quaternion to Euler very imprecise

I doubt he (Euler) cares very much.
24. ## Game initialization.

The main reason for initializing things outside of main is that they are needed for other things that also exist outside of main. This sounds like a circular argument, but consider that every static variable has a lifetime that extends beyond main. If one of your functions has a static variable of type T, and T accesses the logging system in its destructor, then the logging system and its dependencies need to be available outside of main. You can, of course, avoid this whole issue by not using any static variables. However, this requires a lot of discipline, and it has costs both in code complexity and performance.
25. ## Looking for all skills for my on-going MMORPG project

If you﻿﻿﻿ need a music composer/sound designer, I﻿﻿ would love to get involved. I'm not sure what style of music you would be looking for but here are links to my portfolio. I specialize mostly in orchestral writing. Video Game Music - https://soundcloud.com﻿/shaun-bellamy/sets/video-game-music Portfolio - https://soundcloud.com/shaun-bellamy Covers﻿- https://www.youtube.com/channel﻿﻿/UCHBtJNK3jaB_ulhd6yaLsIA
26. ## [Work In Progress] Don't Give Up

'Don't Give up' is a game set around a child growing up through school years, each level represents a school year passed. As you play through the game, the levels get darker to reflect the stress and anxiety many students feel towards the later years, obstacles will also begin to appear in the form of school themed dangers like a pencil or books etc..., as well as this the levels will become more twisted and loose their colour for a more dark, bleak and twisted theme.

• 12
• 19
• 23
• 10
• 10

1. 1
frob
13
2. 2
3. 3
4. 4
5. 5
• ### Member Statistics

• Total Members
256811
• Most Online
6110