When working with a plan it can be quite annoying to receive requests that don't quite fit in; but here is a situation where I have to ask for something that might not be wanted by the community or the company, or who knows maybe lots of people want to buy a better shader tool. The best I can do is take a shot... If you disagree please state.
There is a lot going on at the moment with the next FPS Creator release and AGK; Dark Basic upgrades... hopefully. There is one product I would like to see improved or recreated is Dark Shader.
If not Dark Shader, then a third party tool could be created by one of the plugin stars; I'd be the first customer.
Dark Shader is really good:
Great at:
* Testing and tweaking shaders
* Testing lights
* Tweaking full screen effects
* Texturing and blending
* Compiling assembly code (at least sometimes it works in the engine)
* Crucial cube mapping and camera effect commands added to the engine
I'd say 90% of what is in Dark Shader at the moment is good, and shouldn't change; please keep all of the backdrop, camera, texture list and light tools intact. I am no fan of NVidia FX Composer; worst development tool I've used, and I've used them all!
What I would buy is Dark Shader 2 which would do some or all of the following
Function Text Editor
* Utilize a more complete text editor; for example something with a Select All (CTRL+A) feature and common right click menus with copy and paste
* The ability to change the size of the code font
* Intellisense, dropdown list of typical HLSL functions and semantics as you type
* An error report that does not get clipped by the preview window, or that provides scrollbars so you can see the whole error. Yes you can resize the window, but unless you have two monitors like me, the only way to see the whole error message is to undock the preview window.
* An element list (EG: a navigation list of functions and constants; click to navigate to the declaration)
* Ability to dock the text editor below or beside the project slider property panel; or to implement a floating property panel as an option.
* The ability to store snippets in the user interface
* The ability to insert texture samplers via a menu rather than having to search for needles in haystacks; list all texture sampler names in the menu.
Performance
Dark Shader is practically unusable when creating modern shaders that use bump mapping, per pixel lighting and reflection. The only way to get it stop crashing is to give the Preview.exe Above normal processing priority in the task manager. Even then it still crashes half the time. Making tweaks to code means having to restart Dark Shader sometimes.
* Optional donotgeneratedata parameter
It is true that even in the DarkBASIC engine, shaders can crash when a high level of complexity is used. The idea of using complex shaders is to stop having to create too many of them, each taking a great deal of time to compile during the loading call. Using the donotgeneratedata parameter in the engine helps prevent crashes 80% of the time on my machines; but this does not seem to be available in Dark Shader.
* Get rid of the 'preview window is not responding' message box. The inter-operation often requires the preview to spend 10 or 20 seconds to compile the shader or load a large texture; this message box is a bit irrelevant, in many cases the preview window is responding, it is busy loading.
* If there is anything else that can be done to improve shader performance in Dark Shader, or an alternative and the engine, please put this in the documentation. Yes dumbing down the HLSL code can improve the performance, using more vertex commands less pixel commands; but if there is anything else please let us know.
* The sliders take too long to load; I am sure the property sliders shouldn't take so long to get displayed. Is the program parsing the code in the shader file and adding each constant one by one, slider by slider? Perhaps a progress bar or some other indicator would be more tidy, at the moment I see sliders popping up one by one down the window and it looks like the program has crashed, when it hasn't.
Work flow
* Please get rid of, limit, or provide an option to get rid of the question 'would you like to pack the media with this project'; this appears every time you simply want to save the project.
* The not enough textures message doesn't need to be visible all the time; sometimes not applying all texture stages is required, reading the message all day can be frustrating and it obscures screenshots.
* Technique select; an option to pick the shader technique you want to use.
* Ability to drag and drop textures and shaders into the project or asset list from Windows; and if necessary provide a file explorer instead of having to go through a series of menus and folder browses to insert a texture from here and a shader from there. For that matter, any texture/shader you load should be added to the import list or some kind of recent asset list. (I guess due to the instability of complex HLSL in DarkBASIC in general, one would not have to keep reloading shaders all of the time if the program did not crash so much.)
* Limb textures, limb shaders. Please provide a means to apply shaders to limbs, not just objects; the same is true of textures. Having the ability to work with an object and not limbs is also desired. Having the ability to work with multiple objects does not seem necessary from my perspective, but someone may advise otherwise.
* Because not all objects are square or spherical in structure, a walk / fly navigation option is a must, you simply cannot navigate a scene at the moment. The arrow key and mouse drag movement is only good for simple objects.
Quote: "Green Gandalf
annoying issue: when I try to move the camera/object in the preview window the camera/object moves too fast so it's very hard to zoom in to an area of interest. That ought to be adjustable in some way. "
"
- Additionally, when an object is huge the camera moves to slow even when pressing the control key.
* Please provide option to adjust camera range; sometimes objects are small, and will get clipped out of sight when you try to zoom close to see the detail; such details just become hidden.
* In line with the above request, a way to organize the textures, stages, shaders and properties would need to be proposed. I would recommend either a node based flow chart style setup linking element to element via nodes; or treat everything in relation with some kind of a treeview control with textures, shaders and properties with a per limb or object root.
* Some kind of texture filter menu would be helpful, sometimes a texture needs to be brightened or blurred; going off into the Gimp is time consuming; having a texture filter menu with Brightness, contrast, blur, normal mapping, desaturation and saturation controls would be a life saver. If you wanted to increase the price of the product a bit more, some painting, cloning, copying and pasting texture tools would also be handy.
* Light-mapping; it would be really spectacular if light-mapping could be performed in Dark Shader; since shaders are being used to blend light maps. The feature should give an option to adjust the UV layer as well as all parameters available in Dark Lights. If this feature is implemented, I'd like to see multi-object shading implemented also, since maps contain multiple objects.
Support
* Dark Shader 2, or the alternative should document all of its commands; just like with every other plugin, it would be handy to know what all the functions do.
Importing and Exporting
* The export method shows a folder dialog when you use export All; this dialog never remembers the current folder, it sends you to the desktop; you always have to fish out the folder you want to export too which could be prevented by using the current working directory, or at least the project path. It would not surprise me if it is a Windows FolderDialog issue, but it is pretty bad.
* Please export the settings as-well as the shader. Even better; provide ability to save settings as presets that can be used later, accessed via a manu. State the preset name in a comment or string constant in the exported file
* Just like FX composer; provide XML project format so we can parse the shader settings and materials using modern file parsing procedures.
* Prove me wrong, but I think the full screen effect export code is a little inflexible and a bit misleading. It hides a single object, renders the effect camera, then shows the object and renders the scene. This would never get done in a real game, you wouldn't want to hide then show 1000s of objects 60 or so times per second just to render an effect; far better to use the Set Object Mask command (I think). Or, since the Advance2D plugin is fast at drawing images, forget using camera zero to render 3D, just output the effect camera to an image and paste the image before the full sync. No need to render two cameras and a quad plane. For that matter, set camera zero's backdrop to the effect camera image. Maybe this could be an option, but ultimately a hide and show of all objects per sync seems a little bit much.
Other issues posted by fellow users
TheComet:
Quote: "
This code works fine in any other HLSL compiler, but DarkShader won't compile it:
// note: maxIterations is a value passed into the shader by the host program
for( int i = 0; i != maxIterations; i++ )
{
// do stuff with "i"
}
"
Green Gandalf:
Quote: "DS's great advantage for me is its simplicity, it's just the bugs that are annoying.
My other pet hate, mentioned by Chris, is the inability to change technique. At the moment you have to comment out, or move, the earlier techniques to test a later technique. DS checks the syntax of all techniques - it's just the displayed technique that can't be changed easily. "
Summary
This is all I can think of, others may disagree or might add to the list; if someone could build a shader program for Dark Basic or update Dark Shader it would be good for the future because we should all be using shaders now, it will only make the engine look better if the whole process is made easier. I'd personally pay £40-£60 for such a tool. For now I will continue to dream and use Notepad++ to write my shaders and reload Dark Shader every 5 minutes for the next year.
Note
* Limiting the texture limit might be redundant due to Shader Model 3 supporting more than 8 textures; but this a wild guess at the moment.