Since many users (and developers) are still puzzled about the vision behind ReShade and in particular its framework, I would like to discuss a few related thoughts in this blog post. This might also shed light on some of the design decisions which have been made throughout its development.
Shader development seems to be a lonly task for strong individuals that have specific skills and talent in certain fields which define their work and focus. Since the number of possible fields is limited, some of us share similar interest and skills in overlapping fields. However, as strong individuals we usually work on our own (free) terms and follow our own schedule. Therefore, working on individual and coherent projects becomes the logical consequence.
Though those individual endeavours have usually a rather distinct focus, they still need to share common ideas and approaches to be complete solutions. As an example, to have a complete solution for the user, I personally still need to implement color correction shader, though my actual focus is developing lightning related shader. Since there already exist proper color correction shader and I do not want to waste additional time to write my own, I add what is already available to my final solution. Now, another developer might focus on just another field that is still different from color correction and therefore needs to add the exact same color correction shader to his/her own solution plus maybe some of the existing lightning shader. Considering a greater number of developers working with ReShade (but also other projects such as ENB), we will very quickly be showered with a huge amount of individual solutions that in the sum have more overlapping work than distinct ideas and implementations. This leads to the following problems for users and developers of those solutions:
A – To provide a complete solution, each developer has to cover (ideally) all fields which takes time though he is and cannot re-invent the wheel or provide the best possible solutions for all of them
B – To provide the best solution, developers would have to re-implement/copy existing ideas which is neither rightous nor time efficient
C – The best possible solutions in specific fields will be spread across various complete solutions by individual developers and are hard to identify by the user
D – The user has the ungrateful task to bring together individual pieces in order to create his favourit solution
E – Since individual (complete) solutions cannot simply be used together, due to their overlapping fields, users have to pick their favourit which results in harsh competition and jealousy among developers and their fans
The answer to all above problems is a framework that allows collaboration of individual shader developers and prevention of re-implementations while also respecting the participant’s personal space of creativity and work. Such framework should allow an easy plug-in feature for shader and partial solutions that attracts new developers and which covers all aspects of a proper individual solution, starting from the core development through to the end-user configuration. The ReShade Framework is such framework and was designed with this very purpose in mind. Though it was not released too long ago, it already covers all mentioned requirements in reasonable ways.