About

About this page

This is my personal space where I showcase my self-developed projects and blog about my private coding adventures.

It’s updated when I feel like posting bigger news to the world, for more frequent and smaller updates, follow me on twitter.

All of my public source are available over at my github repository.

About the author

2014-12-12I’m an avid coder, not only during my daytime job, but also (even more so) during my spare time.

My coding adventures started back at the age of eight when I got a C64 as a present and discovered that you couldn’t just play games on it, but also write your own games.

So I’ve been writing code for over 25 years now (some would call that “experience”), moving from one programming language to the other, working with dozens of different APIs on different platforms, thus making coding a huge and important part of my life, with millions of lines of code written and thousands of hours spent in front of development environments and debuggers.

As for my private coding, I mostly write games and 3D related stuff, but also do some database stuff from time to time, while at work I’m usually developing (and maintaining) applications for law regulated periodical technical vehicle inspections.

Recently I’ve become involved with the Khronos group and as part of my involvement I’m currently working on stuff related to Vulkan, the new explicit graphics and compute API.

Programming languages I actively use :

  • C++
  • GLSL
  • Delphi
  • Java
  • JavaScript
  • PHP
  • SQL (MySQL and SQL Anywhere)
  • Free Pascal

Most of my demos, tutorials and games use the open APIs from Khronos :

  • Vulkan (Cross platform)
  • OpenGL (Cross platform desktop)
  • OpenGL ES (Mobile)
  • WebGL (Browser)

Platforms I develop for (or have developed for) :

  • Windows
  • Linux
  • Android
  • Mac OSX
  • iOS
  • Web

Some of the IDEs I use regular :

  • Visual Studio
  • Eclipse
  • Android Developer Studio (IntelliJ)
  • Delphi
  • Lazarus

List of some of the web frameworks I’ve used :

  • WordPress (which this page is using)
  • Twitter Bootstrap
  • jQuery and jQuery UI
  • Apache Cordova
  • Phonegap

Other than that I also do my own art for my games and demos, using applications like Photoshop, 3d Studio, Blender, etc.

And as you might guess, I also like playing games, but I’d say that should be the case for anyone creating games.

If you find my work of any use and want to donate, you can use this PayPal link :

 

26 Comments

  1. hello Sascha Willems
    i would like to give you a rather large feedback (15kb text) for your projekt W game
    unfortunately it seems that your message content checks converts any smiley to a http redirect and then says no HTML allowed
    Also the carriage return of a cut and copied message (out of notepad) seems to be converted to a br smt.
    -> Possible malicious code detected. No HTML, URIs, or anchor tags are allowed <-

    not even this little text made it through the “send message” – hope it works at least here – else you are unreachable

  2. Hi I was reading and viewing your game GUI images for you projekt w game. I was wonder if you could lead me in the right direction for creating those cool GUI interfaces using open gl. I’m currently a software developer for business applications and use C# mostly. I would like to know what I should learn or where to start learning how to build GUI editors and GUI’s like you have in your game. I’ve looked at Qt by digi which is pretty interesting but I would like to build my own stuff from scratch using C++/open gl or if there is a better way like using Delphi Pascal, I would like your opinion. Thanks David.

    1. If you want to create your own GUI framework (including an editor) based on OpenGL, you can actually use any language you like (or prefer), C# works fine with OpenGL. Creating a GUI isn’t very hard if you know OpenGL, it’s just rendering some graphics and textures, implementing message queues, saving and loading your GUIs (I use XML for that). But what makes a GUI shine are the assets, so you should also learn how to create your GUI elements using Photoshop and some 3D modeller (3D Studio, Blender), cause even the most complex and sophisticated GUI framework won’t look any good without great art assets.

  3. Hi Sascha,
    Have been trying to contact you. But the Captcha Code seems to fail to allow this.

  4. Hallo Sascha Willems
    Es ist mir nicht gelunegen kontakt auf zu nehmen. Bitt enehme kontakt auf mit mir.
    ich bin der Editor von Blaise Pascal Magazine
    +31 6 21 23 62 68

  5. Hy Sascha, I’m from Brazil, have been used Delphi and Opengl for long time, and always dreams in create an “3DS max freeware”, my software is only sculpting how ZBrush, and is very simple. I stay thinking in partness, I have a scope, an project not terminate…the “Pragmatikos3d”…What’s think about my idea?

  6. Great work. I’m very impressed and appreciative. Ton’s of working Samples in Visual Studio without any confusing instructions to follow just to build. You are very productive and quality oriented. I’m going to play with the samples to try to get a grasp of Vulkan. If that goes well I surly will send a donation, though I feel I owe you one now, which is why I stopped to give feedback. My first Computer was a C64 because I couldn’t afford an Apple II.
    I was a bit older though(19)and later fell in love with PC (x86) ecosystem, being open to involvement, cooperation,
    and competition which is why I think it is so prolific. Keep up the good work and Thank You.

  7. Hi Sascha,

    Thank you very much for your Vulkan examples which has contributed enormously
    to my understanding of the API.

    I am now teaching game programming having come from Sony, where we developed
    APIs for the Playstation consoles. We have been hosting the UK chapter meetings
    here at Goldsmiths.

    I’ve been boiling down your sample framework into something a bit more student friendly
    by generating classes that wrap groups of Vulkan components. You may be interested to comment
    or even contribute, as much of the base code is your own.

    For example, I am grouping devices, physical devices and queues into a single object
    and images, imageviews and memory objects. This makes it more friendly to novice
    users.

    I still need to make these classes general and support the full vulkan interface.

    Feedback would be welcome.

    My initial crude attempts are here:

    https://github.com/andy-thomason/vulkan-triangle

    Andy.

    1. Hi Andy,

      thanks for your kind words. Having something based on my code used for eductational purposes is great and one of the reasons I went for open source 🙂

      I’ll take a look at the github repo and see if/what I can contribute!

  8. Hi, create tutorials on Vulkan, awesome work.
    I have a question: I see in all your examples, when the viewport change, you record all your commands again.
    vkBeginCommandBuffer
    vkCmdBeginRenderPass

    vkCmdSetViewport

    Is that the only way to do it? Is there not any way to have the same commandbuffer and just change the viewport data? or just update the viewport command in the commandbuffer?

    1. Hi Tobias,

      the viewport is a dynamic state and as such part of the command buffer. So yes, each time you change the viewport dimensions, you also have to re-record the command buffer.

      If you need to do this often, you should use a primary command buffer that stores e.g. only viewport and create secondary command buffers that contain the render stuff.

  9. Hi again, I don’t know if this is the best place to ask questions but the only one I find. I trying to read from a 3D image uint16, one channel. When I run the program in RenderDoc I can see that the texture is correct. But I get nothing from it inside the shader. This is my view for the image.
    ..
    view.pNext = NULL;
    view.viewType = VK_IMAGE_VIEW_TYPE_3D;
    view.format = VK_FORMAT_R16_UINT;
    view.components = { VK_COMPONENT_SWIZZLE_IDENTITY };
    view.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 };

    Does it look correct?

    1. Hard to tell with that small snippet of code. And just because input data looks correct in RenderDoc does not mean it works in an application, if you e.g. don’t do proper image layout transition on hardware that relies on it.

      If you want a better place for asking Vulkan related questions, you should check either the official Khronos forums (https://forums.khronos.org/forumdisplay.php/114-Vulkan-High-Efficiency-GPU-Graphics-and-Compute) or ask over at stackoverflow (http://stackoverflow.com/search?tab=newest&q=vulkan).

      I’m active at both forums.

  10. Hello Sascha

    Thank you very much for your documentation and samples.

    I have one question: I have tried simpleSTLViewer.cpp and it opens the .stl files I give it (I have not found “purple_tentacle.stl”). However I only watch a blue screen.

    How has to be handled the application to see the geometry?

    Best regards
    Koldo

  11. Hi Sascha,

    thank you for your effort with providing a vulkan sample base.

    I am trying to understand vulkan by combining the features.
    Currently I try to enable multisampling for the omnishadow scene.

    However, it crashes and I have no idea why.

    I have simply added the three functions that override the base class and setup the multisample attachments.
    Can you tell me what I am missing?

    Best Regards
    Christoph

    1. Update.

      Nevermind, I got the validation layer running and fixed the problems. The renderpass should not be reused/ copied for offscreen rendering and Textrendering appears not to work together with MSAA.

      TY

  12. Hi,

    It seems that the report submission for the OpenGL ES CapsViewer has stopped working. When I try to upload a report from the app, it gives an error. I also noticed that there haven’t been any submissions to the database since 2017-01-01, so it seems that other users have this problem as well.

    Best Regards

    1. Thanks for informing me about this. My hosting company recently did some changes to PHP versions and permissions and I forgot to update the GL ES database accordingly.

      It should work again, if not please drop me a line.

  13. I am hoping that you could give me some advise. I am working on a research project and will probably end up writing all of the code myself. I am trying to decide between OpenGL and Vulkan. I have a all new research machine with 4 NVidia 1080TI cards. Three of the cards will be used for CUDA code with the fourth card being used for visualizing the results. I have done some preliminary work in Java, but quickly ran into limitation. The CUDA streams will be doing analysis on data cubes being represented by polyhedrons (cubes to start with), but eventually using other models. I have a grid of 1K X 1K X 1K 3D data points being analyzed in CUDA. I want to be able to transfer the data back and forth between the GPUs if possible, and to the display GPU as fast as possible (NVLink?). I was wondering if you thought, given this much information, if I should go for the gusto and learn Vulkan or use OpenGL?
    If you need more info and could help me a little more, let me know via email.

    THANKS and GREAT demos

Leave a Reply

Your email address will not be published. Required fields are marked *