Showing posts from 2016

VK9 - Milestone6 Completed

VK9 has reached it's 6th milestone today. On the surface this seemed like a simple enough milestone but it required handling multiple UBO per renderpass and some other elements that required some new supporting features to be added to the project. In addition there were some minor bugs which were discovered and patched while working toward this milestone. A binary release for the milestone is available on github and as always the code is committed and available for those who are interested.

VK9 - Milestone5 Completed

Thanks to some time off from work due to Thanksgiving I've managed to reach the 5th milestone. Vk9 can now use indexed primitives. During the course of this sprint I ran into an interesting problem. When trying to run VK9 through RenderDoc it was crashing. As it turns out RenderDoc has added D3d9 support so it was trying to hook both APIs. To resolve this I've added RenderDoc integration into VK9. This support is not included in release builds and if it does not find the "renderdoc.dll" file it will skip it. Now when a debug build is running you simply need to open RenderDoc and attach to the existing process. You don't need to inject because it is already included.

VK9 - Milestone4 Completed

I'm excited to announce that I've reached the 4th milestone. In addition to hitting this new milestone I've included pre-compiled binaries under releases on Github. I've also added some basic installation instructions to aid users in trying out the library. Please note that this project is still in alpha and it is unlikely that any full games will run with it. Releases

Hardware Failure

I've been developing VK9 on my AMD test machine. Over the weekend that machine died. All of the drives stopped functioning so I suspect the issue is either power or the drive controller on the motherboard. In any case I'm in the process of moving my development over to my Intel/Nividia machine. In the pass I've had issues with the Nvidia vulkan drivers but hopefully things are in a better state now.

VK9 - Milestone3 Completed

I've officially reached the 3rd milestone. The vertex data sample now renders the same under vk9 as native d3d9. As always all of the code is available on github. A new version of the Vulkan SDK has been released so I'll be upgrading and then starting on the next milestone.

VK9 - Getting Close

I haven't posted in awhile so I thought I should provide a quick update. I'm to the point where the geometry for the 3rd milestone loads and is passed to the render pipeline. I've also gotten the texture to load through the d3d9x method in the sample. Due to some quirks with how the reference counting works it's taken me longer than expected to get to this point but I am at the stage where I can start coding the pieces needed to pass the textures into the shader. The image below is what the output currently looks like.

SchaeferGL Now VK9

After some feedback from the community I've renamed SchaeferGL to VK9. In addition to address some of the questions I've been getting about what it is I've put together a short video.

SchaeferGL - Milestone2 Completed

I'm excited to announce that I've reached my 2nd milestone for the SchaeferGL project. The sample now produces the same output using SchaeferGL as it does under native d3d9.

As you can see they are identical. All of my code is committed to github. Tomorrow night I will start on the next milestone.

SchaeferGL - Geomtry & Colors

I've managed to get the geometry and colors correct for the second sample. There are some transformations that aren't implemented currently which I believe is why the distance from the view port is different from native D3D9. I also need to revisit embedding the shaders into the DLL. Below is a screenshot of the sample running over Vulkan with SchaeferGL.

Even though I didn't hit my target date I am close to completing this milestone. RenderDoc has been incredibly helpful in resolving the issues I've been running into. Originally I was not able to use it because it would crash the samples. I opened a bug ticket and the author recently put an update in that fixed my issue. Apparently it was a bug that only effected the 32bit code path. In any case I've been using the nightly build so if any of you are working on 32bit applications I recommend downloading the latest nightly instead of using the one bundled with the LunarG SDK. This update should be in the next stable…

SchaeferGL- Making Progess

Just wanted to share a quick update before I call it a night. I've managed to get some geometry on the screen. I still have some work to do but I'm getting close.

SchaeferGL - Blank Screen

Some of you may have noticed I did not hit my target date for my second milestone. What is going on is I've implemented the code which should fulfill the requirements of the second milestone however I'm only getting a blank screen. There are no errors or warnings from the validation layers and renderdoc won't attach to my process. Because I'm not getting any feedback from these included debugging tools it's taking me longer than I had hoped to track down the culprit. Because this is taking so long to resolve I decided to update the target dates on the road map and I'm posting this to let anyone following the project know what is going on.

Development Server Overheating

I've been plugging away on SchaeferGL whenever I get a chance to work on it. I've started having heat problems with my development server as the weather gets warmer. To remedy the situation I've ordered a couple fans for it. To continue development while I wait for them to arrive I've installed my development tools on my Nvidia and AMD test machines. In spite of hardware difficulties I'm almost to the point where I can start unit testing the second d3d9 sample. Of course I expect more work to be required to get it to function correctly but so far I still seem to be on track to get the second sample working this month. I've also been encouraged  by the amount of feedback I've gotten since I made the news. There was a mixture of support and disapproval but that's to be expected.

SchaeferGL - In the News

This morning I got a surprise. When I turned my phone on I had a message from a co-worker linking to a phoronix article talking about SchaeferGL. The feedback in the comments seemed mixed but a little publicity will help build a community around it. As the article's author mentioned I have allot of work ahead of me. In fact if it continues to be just me working on it my current estimate is that I'll pass my current unit tests sometime in late 2019. The good news is I've already got one possible contributor and as the project progresses I'm sure there will be more. I also recieved some complaints about the name. I'm open to changing the project name but I have no current plans to spend time coming up with one. Another complaint I saw in the comments was the age of d3d9. My response to that is simple not only are there allot of games that were built with d3d9 there continue to be games built with it. To the best of my knowledge Tree of Savior uses d3d9 and it was rec…

SchaeferGL - First Milestone

The three day weekend went by faster than I excepted but not before I was able to hit my first milestone on SchaeferGL. I got my first D3d9 example to run with SchaeferGL. It is a pretty basic example it just opens a window clears the surface, begins the scene, ends the scene, and then presents the scene. It took allot of effort to get this far but I now have a framework of sorts to start building out the other API calls. That being said the pieces I've implemented so far will need further revision. I have some depth stencil errors coming back from the validation layers and the example worked on my Nvidia test machine but not my AMD test machine. I can only assume the Nvidia driver is more lenient about API violations.
My work so far is available on GitHub in the following repository.
In addition to core functionality I've added some logging using boost. When the "_DEBUG" macro is defined SchaeferGL will setup the validation layer…

SchaeferGL- Revived

Sometime back I started working on SchaeferGL again. The original reason I put the project on hold was because I heard about the then upcoming OpenGL Next API. That API was released as Vulkan. Since the release of spec I've been reviewing sample code and documentation to try to understand how to use this new API. I'm still working on understanding the API but I've started building SchaeferGL on top of Vulkan. The code I have so far is up on GitHub. I've actually made some good progress and am in the process of adding some logging so I can verify the pieces I've code so far. I'm working toward compatibility with my first d3d9 example and hope to have that working Monday because of the three day weekend.

Schaefer's SharpDB

This is my first post of the new year but it will be a short one. I've been busy with work but I've continued my database experiments. I'm currently working on a full blown database. I'm not using Linq but I'm using a similar idea. Modern databases take the queries you provide them and build execution plans which they execute. I've put together a basic storage engine and I am building a query processor that will build DotNet methods from SQL syntax to be executed against the storage engine. The idea is that once a query is compiled it should have near native performance. As far as the expense of compiling and parsing the SQL I can use the same trick modern databases do. Cache the execution plan (assembly in my case) and use the query as the key. For stored procedures I'll just use the name as the key but I'll implement those later. That is all for tonight but I'll post more once I've gotten further with my experiment.