Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

1135 Excellent

About SuperVGA

  • Rank
    Advanced Member

Personal Information

  • Role
    Concept Artist
    Creative Director
    Technical Director
  • Interests

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. SuperVGA

    How difficult is it to make programs?

    It's a very, very blurry line - I haven't come across a decent programmer who didn't look up stuff from time to time...
  2. I'm convinced it happens in the tessellation stage. The patch is a single CCW quad which I render using glDrawArrays(GL_PATCHES... I've tried reversing the winding order, starting at a different vertex, and even twisting it to a DX-style "Z" order. It still comes out like this.
  3. A little backstory: I'm tessellating some simple terrain. I have some patches which are modulo translated up to their own size, so the patches are repeated while giving an effect of being an endless supply of patches to either side. I'd like to only translate them up to one unit instead, so that the far reaches of all my patches don't change by the full patch size, but only by one unit. However, the winding order of the triangles differ, and 4 texels in the heightmap render different depending on the winding order, so I'd like to enforce the winding order for all the generated triangles. Is there any way to dictate the triangle winding order for all the generated geometry? I'd like for them to be similar, not flipped around the center of the patch... Thanks in advance, /SuperVGA
  4. SuperVGA

    Funky GLSL Linker Error

    Sorry for the trouble everyone. It was in deed my loader which messed up. More specifically, it was my fs utility function to read files into strings. I did blindly follow some advice, and everyone who might come across this: do not trust tellg() to deliver the size of your files! https://stackoverflow.com/questions/22984956/tellg-function-give-wrong-size-of-file/22986486#22986486 My buffer was too big, and the dirty part of it ended up containing this [], which curiously enough was always found near the last line of the shader source.
  5. Dear TexasJack, If you're new to programming and have a passion for image processing, I'd advise you to start with python. Install it, put python.exe on the path and go through a few easy examples first. Get comfortable with the python language (I recommend this, but if you're impatient - I get it) Image manipulation using a good library is often very easy (at least when you're not starting out with advanced image manipulation and real-time graphics) but it still gets somewhat tougher if you've never gotten comfortable with the language. Then get the pillow library (it's easy with pip, which is the package manager for python) Look at all the pillow tutorials. I've found pillow very useful for mass image processing down to pixel manipulation. I'm sure it can do most of what you're looking to do. And so what if it's not ultra-fast: It's a solid, easy start. Ping me if you need a hint or two. I'm not going to pretend I didn't dive right into the deep end myself, but I think this is might quickly get a little difficult.
  6. Hi Everyone, It's been a while - I've been keeping myself busy with some less gratifying aspects to prevent me from playing too much with the unfinished product, then not knowing where to go next. I suppose we all learn as we go... So a few years back, I was so sure I nailed (tesselation) shaders. Obviously, I had just gotten lucky. I did things different back then - somehow I managed to get a 410 core tesselation shader working. I'm already suspicious of my Shader Loader class, because I can't for the life of me find anything wrong with my shaders. I'll proceed to refactor my Shader Loader now, but perhaps I'll upload that if you agree that my shaders are OK, and that I'm not going crazy... Vert #version 410 core in vec4 position; in vec4 color; uniform mat4 model; uniform mat4 view; uniform mat4 projection; out vec4 position_tc_in; out vec4 color_tc_in; void main() { position_tc_in = projection * view * model * position; color_tc_in = color; } TesC #version 410 core in vec4 position_tc_in[]; out vec4 position_te_in[]; in vec4 color_tc_in[]; out vec4 color_te_in[]; layout (vertices = 4) out; void main() { position_te_in[gl_InvocationID] = position_tc_in[gl_InvocationID]; color_te_in[gl_InvocationID] = color_tc_in[gl_InvocationID]; if(gl_InvocationID == 0) { gl_TessLevelOuter[0] = 4.0; gl_TessLevelOuter[1] = 4.0; gl_TessLevelOuter[2] = 4.0; gl_TessLevelOuter[3] = 4.0; gl_TessLevelInner[0] = 8.0; gl_TessLevelInner[1] = 8.0; } } TesE #version 410 core in vec4 position_te_in[]; in vec4 color_te_in[]; out vec4 color_f_in; layout (quads) in; void main() { float u = gl_TessCoord.x; float v = gl_TessCoord.y; vec4 a = mix(position_te_in[1], position_te_in[0], u); vec4 b = mix(position_te_in[2], position_te_in[3], u); gl_Position = mix(a, b, v); vec4 ca = mix(color_te_in[1], color_te_in[0], u); vec4 cb = mix(color_te_in[2], color_te_in[3], u); color_f_in = mix(ca, cb, v); } Frag #version 410 core in vec4 position_te_in[]; in vec4 color_te_in[]; out vec4 color_f_in; layout (quads) in; void main() { float u = gl_TessCoord.x; float v = gl_TessCoord.y; vec4 a = mix(position_te_in[1], position_te_in[0], u); vec4 b = mix(position_te_in[2], position_te_in[3], u); gl_Position = mix(a, b, v); vec4 ca = mix(color_te_in[1], color_te_in[0], u); vec4 cb = mix(color_te_in[2], color_te_in[3], u); color_f_in = mix(ca, cb, v); } The error assets/shaders/terrain failed to link: Tessellation control info ------------------------- 0(23) : error C0000: syntax error, unexpected '[', expecting "::" at token "[" (0) : error C2003: incompatible options for link This doesn't lead me to think the shader loading code is wrong, since it actually references a line in my tessellation shader. It's just that I don't think it's making a lot of sense. This is why I think my loader might be wrong, I just think it's really strange that everything here works if I remove the color part. I've spent a lot of time thinking it was the wrong way to pass a vertex attribute through the tessellation stages, but it doesn't really seem incorrect. Many thanks in advance! Best - Svga
  7. It's tough to make a game engine. Since you're already hell-bent on this, my advice is: Think of one basic game that you'd like to use on the engine, aim for that. Implement the game, then generalize all the components, tear away the game-specific stuff. Use your general components to implement a more complex version of the game, incorporate scripts etc outside the engine itself. Don't focus on the rendering part until last (I personally get distracted and play around with physics and lighting for months, when I should be doing other, more fundamental things)
  8. SuperVGA

    OOP is dead, long live OOP

    Thanks, aside from the organizational advantages I never considered the build-time benefits of this before.
  9. Ah, right. Yeah, I don't think it's something that requires a whole lot of thought either, so it's fair enough. Mostly I was just puzzled as to why the paper didn't reference it.
  10. SuperVGA

    Daily Bonus Logic

    I think it was Need for Speed: World which had me coming back. (And I hated it - really felt addicted and I felt a bit dumb for doing it, even if the rest of the game was good) One would need to do a daily task. I think it mostly involved driving around in an area of the city, to collect crystals floating over the street. Once 25 (?) had been collected, that was it for the day. A little one-time bonus, a "days-in-a-row" sort of bonus was also given. But I was going for this, Audi Quattro I think it was, special car, that required me to do this for 150 days IIRC. On day 80-something, I went to on a long weekend trip and, yeah - bummer. 😕
  11. It's interesting that neither this thread nor the linked paper mentions it: I'm convinced this is just a 3D bresenham implementation. (credit where due) Back in early 2010, I played around with implementing bresenham in a fragment shader working on a volume texture, and it actually did pretty good. It's sort of a nice way to avoid using polygons, if you're into that sort of thing, but it was a little too much branching for my GPU at the time...
  12. SuperVGA

    OOP is dead, long live OOP

    Isn't it still good C++ practice though to keep free functions in a namespace or even within a class, as static functions? I have gotten into the habit of starting to implement every member function as static, and if I discover that using the interface is sufficient, I reevaluate its placement - otherwise I turn it into an ordinary instance member function.
  13. SuperVGA

    God Help Me, I'm Making A Tactical RPG

    Since you've already had some luck with Game Maker, I'd say return to that, see how much you can do. I promise you it's possible to do an isometric map in GM as well - I think your issue in that regard is that you wouldn't know how to work with isometric coordinate systems and tiles - but read an article on it. Check these. Since you're coming from the design angle, then I think the most valuable and important bit you can create now is a design document for your first working prototype. Be concrete about what your game is supposed to do. Describe everything and use it as a bible when working on your project. It's cool to dive in to larger engines and programming languages, but if you can start with *anything* you're comfortable with, I'd say do that. There's some learning associated with making a game either way. And It will be a rocky road too. (Nice portfolio btw - I suppose you're making all the sprites, tiles and visual novel art for your project?)
  14. Wow, the article describes one technique. I wouldn't call it modern, either.   You could explain GPU raycasting, polygon aided raycasting, different approaches to approximate or truncate isosurfaces, so why is MC getting all the love?   And I'd mention metaballs in connection with explaining scalar field polygonization, but perhaps that's just me. Also, here the scalar field is described as "our voxels" - I'd say it's a bit more than that.
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!