Quake3World.com Forums
     Programming Discussion
        What would you prefer for a Shader Editor? Vote, comment.


Post new topicReply to topic
Login | Profile | | FAQ | Search | IRC




Print view Previous topic | Next topic 
Topic Starter Topic: What would you prefer for a Shader Editor? Vote, comment.

The hell good boy
The hell good boy
Joined: 22 Jun 2011
Posts: 1920
PostPosted: 04-12-2021 07:30 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Hi folks. I have attempted such in past, failed miserably, because I didn't have enough skills nor I knew how to look for knowledge resources in order to learn what I needed to even start. But now that I have quite a bit more experiences in programming and quite a better understanding of coding and development, I want to attempt again. I'm talking about Shader Editor. However, I don't know which kind of route I shall go with, so I'm asking you, which API would you rather use. Vote in the poll above, below are your options in more details:

1. Classic Win32 API
This option is best if you want to use the Shader Editor on older system. Classic old Win32 API would allow me to make the app working in old Windows API, down to Windows 95 or 98, which was the first commercial Windows edition that used 32bit environment, while still being based directly upon MS-DOS. I would have to install an unofficial plugin to Visual Studio that would allow me to build the application for Windows 98 while not having to lauch up an actual Windows 98 system in virtual machine with VS 6.0 installed (I have latest Visual Studio 2019 Community Edition installed on my Windows 10 host). It also solely depends on how far into history will an OpenGL driver let me go. Win32 API is best option if you don't want to depend on .NET framework and want the application to work straight away, built right out of box to run directly. Windows 95 and 98 in base installation lacks .NET framework completely, it has to be installed separately if you want to use .NET apps on these systems, and good luck finding old .NET libraries that still work under these systems nowadays.

2. Modern .NET Ribbon API
If you don't mind having the app to depend on newer .NET libraries (I believe Ribbon requires .NET version 5 upwards, not sure though) and having to depend on modern Windows systems (Windows 7+), you may choose this option. While Classic Win32 API allows for broader compatibility, .NET Ribbon allows for more design options and if you're more familiar with newer Office which does use Ribbon API, and you are comfortable with it, then this is the right choice for you. I would also prefer to develop under this, partially to just try it out, and partially because I am quite confortable with using Ribbon and I wouldn't have any difficulty using Ribbon on a Shader Editor. I even kind of forgot how to use old Office, which was still based on the classic old Windows feel (up to Office 2003). I do have Office 2000 installed on my Windows 98 virtual machine however, so at least I have Clippy back :) Anyway, if you are comfortable using Ribbon and do not mind having to use newer modern Windows, then choose this option

Discussion, opinions and help wanted
Of course, this project will need your help. Your opinions, advices and discussion will greatly impact the end product and the project actually depends on your feedback. So feel free to discuss, give your opinion, voice out your advices. I might even ask for some help, but won't ask for help for basic things that eighter I should already know, or could be actually found online in official Microsoft documentation. So below, you can comment, voice out your advices, opinions, reason your choice, etc. I'll leave the poll running for 3 months (90 days), then come back for results. I'll update the topic manually, so the poll is set to never expire, it will be then removed and replaced by results the moment I check them out. Starting today, which is April 12th 2021. After poll ends, I'll start making it for whichever API platform wins.

Update May 12th 2021
Poll voting is over, these are the results:
Code:
What kind of API would you prefer for Shader Editor?
---------------------------------------------------------------
Classic Win32 API (C/C++, down to Windows 9x)      0%   [ 0 ]
Modern .NET Ribbon API (C#, Windows 7+)          100%   [ 2 ] x
---------------------------------------------------------------
Total votes: 2


I must say I'm disappointed. Only 2 people voting and one of them is me (because I'd kind of like to try out making a Ribbon app). Well, I gave you my word, so I am gonna start making the Shader Editor in C# with Ribbon framework for Windows 7+ (64bit and 32bit versions). If you are using Windows XP or Vista, Shader Editor might work for you, but it isn't guaranteed that it will. Windows 7 and above are recommended versions. Windows 95 and 98 still might support it if you install apropriate .NET framework version, but again, it is not guaranteed that it will work. Most people use Windows 10 nowadays anyway, so it's no big deal if those ancient Windows versions are not supported at all. Windows 7 support is still quite generous from me since Windows 7 is already past its support life cycle. There are however still quite a lot of people that use Windows 7, so I figured out that it would be quite good to include support for it as well.

Questions and answers
So, I will play a role of an oracle and predict some questions you may ask me. If you want to get your question answered and don't see it here, I will add them if you write a comment down below asking.

Only Windows? Do you plan to make it also Linux friendly?
Well, I might port it to Linux and MacOS later, but at this point, I will be focused on Windows only development. I am aware that some of you are using Linux or MacOS instead of Windows, and you would like to use a Shader Editor on that system as well. My primary system is Windows, so this is what I focus on right now. If you are comfortable with porting Windows apps for Linux, then source code will be available on GitHub once a first alpha testing version will be available. The link to source code will be included in this topic.

You said OpenGL? Does that mean you'll have an option to render the shade texture?
Well, I would like to. The main reason why I want to build Shader Editor is the lack of visual preview when writing the shaders. There is a visual GUI Shader Editor out there called "Quake III Arena Shader Editor", or Q3ASE for short, but first of all, this tool is Windows only, while Linux users will have to resort on Wine and install additional libraries, second of all, it uses DirectX render engine instead of OpenGL, which means there is a difference on how the textures appear, and third of all (and most importantly), the development of this little tool has been discontiued and there is no support for newest features the Quake 3 shader engine supports (plus it kind of forces a specific style and only could be used as GUI editor, not text based). Not to mention number of bugs that will never be addressed since development has been discontinued. I am more comfortable writing my own code instead of it being generated (plus there is very limited support for comments inside the shader file when using old Q3ASE, allowing only comments above shaders, not inside the shader code). The only thing I lack when writing my shaders is lack of visual preview so I could see how the shader will look in game. So this is why I decided to write my own Shader Editor.

Can I port the app to Linux/MacOS myself?
If you know how to code and are comfortable with rewriting Windows API calls to Linux calls (difficulty depends on which platform wins - Win32 API will be easier to port than .NET Ribbon), then I have no reason to disagree. Feel free to port it even during alpha and beta testing from source code which will be available once first testing version will be out. I will consider porting it to Linux and MacOS after main testing is done, but if you begin porting it at the fresh start, it will make it so much easier for me to finalize the port afterwards. Don't forget to include the original source, and I'll give you shoutout and thanks for porting it once the project is finished. If multiple people decide to make their own port versions, please, don't steal from each other and most certainly don't compete with each other. The best option would be simply one person porting it, or if multiple, it would be better working on the same project simultaneously as a team, contributing with improvements. Don't make me decide between different port versions to be included, please.

How do you plan to use OpenGL for texture preview render?
Good question. At the time I am writing this, I don't know. But be sure I will look into it and of course learn how to use OpenGL render engine to preview the textures of the shader that is being written in the editor

Is it going to be GUI editor like Q3ASE?
No. I actually prefer writing my own code, so the editor might contain some macros that will generate basic structure maybe with default settings for each texture, but the core concept is actually a text editor with syntax highlighting. I don't know how the program will determine which shader and which stage of the shader is active yet, probably by monitoright which line your cursor is on and parsing the shader file real-time, which should build an internal binary map of the shader file (updated with each edit of the file contents), solely for the purpose of determining which shader is being edited right now, and the shader texture preview will determine the shader to display automatically, and automatically updating according to which shader is being edited in real-time. Right now, I do not know exactly how things will be achieved yet, so please be patient, or give me some suggestions to speed it up.

That's it for now. Feel free to ask me more questions, I'll add them and answers to them here.



_________________
[ Websites | Facebook | Twitter | YouTube | Instagram ]
When you feel the worst, turn to the sun and all the shadows will fall behind you.” - John Lennon


Last edited by CZghost on 05-12-2021 01:28 AM, edited 1 time in total.

Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44127
PostPosted: 04-12-2021 10:36 PM           Profile   Send private message  E-mail  Edit post Reply with quote


Never change, czghost. Never change.




Top
                 

The hell good boy
The hell good boy
Joined: 22 Jun 2011
Posts: 1920
PostPosted: 04-12-2021 11:51 PM           Profile   Send private message  E-mail  Edit post Reply with quote


Is that a command or a statement? :confused:



_________________
[ Websites | Facebook | Twitter | YouTube | Instagram ]
When you feel the worst, turn to the sun and all the shadows will fall behind you.” - John Lennon


Top
                 

The hell good boy
The hell good boy
Joined: 22 Jun 2011
Posts: 1920
PostPosted: 05-12-2021 01:31 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Updated, published poll results. I am quite disappointed. Turns out not much people are interested in the project as it seems. Well, I'm gonna make it anyway, just for the sake it's gonna make shader creations easier for me as a visual feedback is quite important for me, as well as recent shader support.



_________________
[ Websites | Facebook | Twitter | YouTube | Instagram ]
When you feel the worst, turn to the sun and all the shadows will fall behind you.” - John Lennon


Top
                 

Grunt
Grunt
Joined: 07 Mar 2009
Posts: 65
PostPosted: 01-21-2022 02:51 PM           Profile Send private message  E-mail  Edit post Reply with quote


Here. I am also interested. :-)



_________________
http://www.per-thormann.de/


Top
                 

Cool #9
Cool #9
Joined: 01 Dec 2000
Posts: 44127
PostPosted: 01-22-2022 12:07 AM           Profile   Send private message  E-mail  Edit post Reply with quote


Don't get your hopes up about this ever seeing the light of day, Perle




Top
                 
Quake3World.com | Forum Index | Programming Discussion


Post new topic Reply to topic


cron
Quake3World.com
© ZeniMax. Zenimax, QUAKE III ARENA, Id Software and associated trademarks are trademarks of the ZeniMax group of companies. All rights reserved.
This is an unofficial fan website without any affiliation with or endorsement by ZeniMax.
All views and opinions expressed are those of the author.