Aller au contenu

Photo

NWShader


  • Veuillez vous connecter pour répondre
123 réponses à ce sujet

#101
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
I got the file, I'll integrate it into the source tonight or tomorrow morning. Thanks again. :)



As for the skinning, NWN has some control over that, I'm not entirely sure (I haven't thoroughly read the code there). The GPU is capable of doing it, and the limitations on GPU skinning and NWN skinning are identical, so there's a chance NWN is offloading it to the GPU. However, jiggly meshes seem like they might be done in CPU (not sure exactly, since adding a vertex shader can break them, which usually suggests GPU). NWN doesn't seem to use vertex buffers in the GPU (the most significant reason for why it runs so slowly), which would mean that if it does GPU skinning, it's download the data every frame.

#102
Nostrebor

Nostrebor
  • Members
  • 32 messages
I think there is a memory leak in "CAurTextureBasic::glImage(bool create)" . This function creates a new "nwshader_texture". The call to glImage is often (maybe always) bracketed with a call to



"EXPORT void GLAPIENTRY PLATFORMNAME(glDeleteTextures)(GLsizei n, const GLuint *textures)"



in nwshader.cpp.



I think a delete of the recently created nwshader_texture needs to go in here (I do not see anyplace else it is deleted.

#103
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
I think you may be correct. I know the material is deleted, but the texture may not be deleted. Doing that easily may require making the texture map into a multi-index map as well, since the shader binding depends on names and the delete function uses indices.

#104
Nostrebor

Nostrebor
  • Members
  • 32 messages

pkpeachykeen wrote...

I think you may be correct. I know the material is deleted, but the texture may not be deleted. Doing that easily may require making the texture map into a multi-index map as well, since the shader binding depends on names and the delete function uses indices.



I found this because I was working on a way to map the texture index back to the name.  As a result I think I have at a rough cut at a fix.  I will email it to you after I do some checking.

#105
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
You may want to take a look at the map used to store the materials, if you haven't already. With a slight tweak, the same class can be used as a map<int, string> and keep track of the texture name/ID relationship from both sides. It may also be a chance to forcibly optimize textures, as the map can be checked for an already-loaded texture and simply return that ID, instead of loading a new one.

#106
Nostrebor

Nostrebor
  • Members
  • 32 messages

pkpeachykeen wrote...

You may want to take a look at the map used to store the materials, if you haven't already. With a slight tweak, the same class can be used as a map and keep track of the texture name/ID relationship from both sides. It may also be a chance to forcibly optimize textures, as the map can be checked for an already-loaded texture and simply return that ID, instead of loading a new one.


The map<int, ptr> is what I did.  The texture id's seem to be pretty linear (only a few gaps).  I'm wondering if the one of the dynamic array templates my be a good choice.  We could set values to NULL for the entries that are skipped.

One of the reasons I was looking at this was to see if entire models (.mdl's) could be identified.  I found that nwn calls glDrawElements in the same order that the nodes appear in the models hiarchy.  In the red dragon model I placed a node called s.c_reddrg at the beginning of the node list and one called f.c_reddrg at the end.  The net result is that nwshader could identify the start and finish of a model and operate on the entire model.  

Interestingly the dragons wings (which are skinned) do not seem to go through glDrawElements.

I could see a couple of uses for this:
  • Let the gpu's do the vertex animation instead of the PC.
  • Have nwn process "bare bone" models (ones with very few vertexes, but all the bones) and let nwshader add the vertexes (the meat so to speak).  You might be able to create some very complex models that nwn would not normally be able to handle.


#107
Lord Sullivan

Lord Sullivan
  • Members
  • 559 messages
Anything new going on with this awesome util lately?

#108
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
Not recently.
I have two bugs left on the list to take care of, then some testing, and we can call it a stable release.

I expect at least one more patch; one if I can get the shader loading bugs and the GUI list bug, two if I can't. That patch (or the second one) will, if all goes according to plan, be a preliminary 0.9 (release candidate) version and be promoted to 1.0 after testing. Of course, that assumes these last bugs can be squashed, and I've been chasing them for a while now (narrowed it down to a very few parts of the code where they may be lurking).


Most of my time lately has been spent on the project that will come to replace NWShader (actually, it will also replace the inspiration for NWShader, MGE, and at least influence a number of similar projects). There will be no significant change to how shaders or the NWN module work, I'm basing the new core on what I've learned writing NWS.

That's coming along nicely, I had a functional demo for another game (till I decided to rip the code apart and clean it up) and am working on fixing some bugs in the core. I'm setting up some stuff to help make a NWN module quick and simple (hooking OpenGL is ridiculously complicated compared to DirectX, but I've done it once, so...).

As a multi-game system, we'll be seeing better stability (from, hopefully, more testers), some more features (I'm going to be a bit tight-lipped about those until I get working demos, in case they fail, but if they don't, the spelling of epic will change :wizard:), plus making the shader linker more robust.

Right now, I use Cg to compile the shaders and have some old and kinda messy NWShader code handling the textures , parameters and what-not. My new system is designed from the ground up as a core for this sort of app and, from all my tests so far, does it pretty well. It can set up and link textures with ease and handle a good bit of stuff that's kind of hacky in NWShader at the moment.

That will eventually replace NWShader (the NWS forums have already been redirected to the new forum). It will support NWN, NWN2, The Elder Scrolls Morrowind and Oblivion, at least (any other OGL/DX8/9/10 games are possibilities). NWN and Morrowind are tied for #1 on the support list, NWN2 is next, and I'm trying to get in contact with the Oblivion Graphics Extender developers to see if they'd like to use the core (#3).

To prep for all that, I've purchased hosting with Westhost, one of the best hosting companies around (and a friend of mine works there, so I can bug him to fix anything :P) and set up some new and expanded forums.

Oh, and this all would be done, except for Minecraft and those meddling creepers. :?

Modifié par pkpeachykeen, 09 décembre 2010 - 04:52 .


#109
Lord Sullivan

Lord Sullivan
  • Members
  • 559 messages
Sounds cools, can't wait to see whatever comes out of your brain in binary ;)


#110
Birdman076

Birdman076
  • Members
  • 186 messages
Does this update NWN's OpenGL at all allowing those with newer video cards the ability to play the game without the low FPS associated with Nvidia 200 series and newer cards that do not support older OpenGL?

#111
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
It uses some OpenGL 1.4 and newer features, but it does not inherently force NWN to use more modern render paths.



It may be possible, depending on how NWN handles some of the data internally, to upgrade functions on the fly. I have a few theories for doing that; unfortunately, none of them fit into the current NWShader setup. Fortunately, they do fit into the updated framework, so as soon as I finish laying the foundation for that, I can test that. At the very least, I hope to cache draw calls and call them as an array or multi-vert call later on, which will help take advantage of GPU power.

#112
Birdman076

Birdman076
  • Members
  • 186 messages
Well, I'm just thinking that if provisions are made to allow people with new video cards to run the game then there would be that many more people with the ability to play and check out the game. Thank you for your answer, I have yet to try NWShader but have it downloaded on the computer and when I get some time I will load it up as it looks really sweet.

#113
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
There are a few possible solutions, although I'm not sure how much they'll improve speed (there's some overhead in the translation that may counter the increase from the new calls).



I think I mentioned it before, but I've been spending most of my free time lately reworking the core of NWShader. It originally started as a single-purpose system designed for one thing, then I started adding stuff and it started falling apart. The Chronepsis versions were a partial rewrite that obviously had issues, so I've been taking it from the bottom up.



It's taking some time, obviously, but so far is much more stable and does things properly that NWS kind of hacked in. I have to put the final touches on the core and finish the NWN module, then that'll be coming out for testing (shaders and materials will stay compatible, other stuff will just be improved).

#114
Dark_Ansem

Dark_Ansem
  • Members
  • 638 messages
serious quality stuff from you.

#115
xidekeen

xidekeen
  • Members
  • 14 messages
Hi, sorry to revive an old thread but I'm having serious problems with the Nwshader.

I've downloaded - Chronepsis 0.2.2.3.rar and the Patch0230.rar.

I'm positive I installed them correctly but when I run it nothing changes everything looks the same.
I tried running the NwshaderGUI and I get message saying config not found and everything is unchecked. When I try to apply some of the features and load the game I just get a black screen inside the game (not menu) and I can only see my hotbars. I'm hoping if someone can help me out with this?

P.S - Using Chronepsis alone seems to work but everything is to blurry, I tried changing it and everything just unchecks itself and not able to save it.

Modifié par xidekeen, 05 juin 2011 - 08:42 .


#116
Ce1orn

Ce1orn
  • Members
  • 3 messages
A year or so ago, I was enjoying nwshader, worked fine on an old nvidia 7k series, and an ati 2900, but now with an nVidia 5xx series it doesn't.

I'm having similar problems as xide; NWshader is hooking/running, but no shaders work. The camera hack works, and the fog setting works, but I get no shaders effects in-game like i used to. This is where the log starts showing errors:

19:20:14 :: Shader Factory: Loaded texture error.png on 08CA7FD8.
19:20:14 :: Shader Factory: Setup complete.
19:20:14 :: Set up DirectInput interface.
19:20:20 :: Cg: No vertex or fragment profiles found. Shaders may not function.
19:20:20 :: NWShader: Compiling shaders...
19:20:20 :: CG: Could not find valid techniques.
19:20:22 :: CG: Could not find valid techniques.
19:20:22 :: Shader Manager FS: Some shaders failed to load.

Any ideas as to what's going on from that?

#117
R-TEAM

R-TEAM
  • Members
  • 30 messages
Hi,

will it be ever an update or bug fix available .....?
Looks the project is dead :\\
With my old ATI X1950XT the shaders run fine ...
But now with my newer ATI HD4850 and actual drivers - no shader work anymore ...
Its make no diff which shader i test - none work.
So if no bugfix coming it is mainly only usefull for older cards imho .....(sad)

Regards
R-TEAM

#118
PC-48

PC-48
  • Members
  • 2 messages
Wondering if this forum is still alive, having problems with shaders in the GUI staying checked. I check the 3 that I want to use: depth of field, bloom, and hdr but then when I reopen the GUI they are all unchecked again.

#119
pkpeachykeen

pkpeachykeen
  • Members
  • 77 messages
Despite the lack of updates (here), the project is far from dead. About a year ago, it was rebranded as part of the Voodoo Shader Framework, providing an extended featureset among other things.

NWShader itself will not receive any more patches, but Voodoo/Frost is still being developed (how stable it is varies).

There are quite a few known issues with the last release of NWShader, some of which would take significant core work, hence the shift to the unified system and rewrite.

Until that is compete, I would recommend using the next-to-last release of NWShader, it was significantly more stable. You may also be interested in following Voodoo (can be found at https://github.com/p...en/VoodooShader ), as that is the replacement.

As far as the issues brought up in the last few posts:

@Ce1orn: That indicates that no available OpenGL profiles can be found by Cg on your hardware. It may be driver related, but there should always be a few available profiles. There are some significant issues with the recent nVidia drivers, particularly when it comes to their shader handling, but I'm not sure that's the cause. I assume drivers are up-to-date and such?

@R-TEAM: As noted, there will be no additional updates to NWS as such. What drivers are you running, what does the log note? I'm curious if it's related to Ce1orn's issues, or different.

@PC-48: IIRC, the shader list had at least one bug. Check to make sure they are in the config file, and if not, you may try manually adding them.

Again, as I mentioned, I'd recommend the next-to-last release as it is more stable, until Voodoo/Frost is complete. I'd put Frost at about 70% completeness compared to the last NWS, and significantly more stable.

#120
Dark_Ansem

Dark_Ansem
  • Members
  • 638 messages
great news! an excellent idea :D

#121
PC-48

PC-48
  • Members
  • 2 messages
Thank you for the response, so is the next-to-last release of NWShader Bahamut 2.14 or just Chronepsis 2.2.3 without the 2.3 patch applied?

#122
Lord Sullivan

Lord Sullivan
  • Members
  • 559 messages

PC-48 wrote...

Thank you for the response, so is the next-to-last release of NWShader Bahamut 2.14 or just Chronepsis 2.2.3 without the 2.3 patch applied?


Bahamut 2.14

#123
R-TEAM

R-TEAM
  • Members
  • 30 messages
Hi,

@pkpeachykeen

have the latest ATI drivers installed.ATI HD4580.Win7 64bit.
(have 3 PCs Workstations running and doing Proffesional 3D art(Maya), so i am sure all drivers all time up-to-date - as i make money with it and dont need crashes after 5h work as example :) )

nwshader log:
12:42:28 ::	Logger created.
12:42:28 ::	NWShader: Starting...
12:42:28 ::	NWShader Chronepsis (v0.2.2.2)
12:42:28 ::			Copyright (c) 2010 Sean Sube
		http://nwshader.sourceforge.net 
	
	All original elements of the NWShader project are licensed under
	the terms of the GNU General Public License. Under no circumstances
	may any element of NWShader be used in any proprietary project.

	Please refer to the copy of the GPL distributed with NWShader for
	further information, or, if you did not receive a copy, write to 
	the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 
	Boston, MA  02110-1301 USA.
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	For help, support, questions, comments, or complaints, please
	send emails to Sean Sube (pkpeachykeen) at cx029a@live.com, or
	use the message boards on the NWShader SourceForge page.



12:42:28 ::	Config: Config file read.
12:42:28 ::	  GUI
12:42:28 ::	  Settings
12:42:28 ::	    TintWorld = false
12:42:28 ::	    DebugLevel = 0
12:42:28 ::	Config: Reading shaders list.
12:42:28 ::	Config: Error parsing shader.
12:42:28 ::	Config: Done parsing config file.
12:42:28 ::	NWShader was unable to load the language file for d.
12:42:28 ::	NWShader: Started by process F:\\Games\\NeverwinterNights\\nwmain.exe.
12:42:28 ::	NWShader: Attached to NWMain. NWShader will hook itself.
12:42:28 ::	NWShader: Hooking into OpenGL...
12:42:28 ::	NWShader: Hooked compressed texture creation.
12:42:28 ::	NWShader: OpenGL hooked.
12:42:28 ::	NWShader: Starting to load plugins...
12:42:28 ::	NWShader: Error searching for plugins.
12:42:28 ::	Set up DirectInput interface.
12:42:30 ::	NWShader: Creating sys check context. Not cached.
12:42:30 ::	NWShader: Making syscheck context current.
12:42:30 ::	NWShader: Deleting syscheck context.
12:42:30 ::	NWShader: Creating context.
12:42:31 ::	NWShader: does not have cached device/context. Grabbing...
12:42:31 ::	NWShader: Initializing system...
12:42:31 ::	NWShader: Hooking into engine...
12:42:31 ::	NWShader: Hooked engine functions.
12:42:31 ::	Viewport info: 0; 0; 1680; 1050
12:42:31 ::	GLEW: Started successfully.
12:42:31 ::	DevIL: Started successfully.
12:42:31 ::	Shader Factory: Starting Cg...
12:42:31 ::	Cg: Using version 2.2.0010
12:42:31 ::	Cg: Profile VP20 is not supported.
12:42:31 ::	Cg: Profile FP20 is not supported.
12:42:31 ::	Cg: Profile VP30 is not supported.
12:42:31 ::	Cg: Profile FP30 is not supported.
12:42:31 ::	Cg: Profile VP40 is not supported.
12:42:31 ::	Cg: Profile FP40 is not supported.
12:42:31 ::	Cg: Profile GPU_VP is not supported.
12:42:31 ::	Cg: Profile GPU_FP is not supported.
12:42:31 ::	Cg: Profile GP4VP is not supported.
12:42:31 ::	Cg: Profile GP4FP is not supported.
12:42:31 ::	NWShader: Creating textures...
12:42:31 ::	NWShader: Framebuffers disabled in config.
12:42:31 ::	Shader Factory: Texture format accepted.
12:42:31 ::	Shader Factory: Created texture thisframe on 1.
12:42:31 ::	Shader Factory: Texture format accepted.
12:42:31 ::	Shader Factory: Created texture lastframe on 2.
12:42:31 ::	Shader Factory: Texture format accepted.
12:42:31 ::	Shader Factory: Created texture lastshader on 3.
12:42:31 ::	Shader Factory: Texture format accepted.
12:42:31 ::	Shader Factory: Created texture lastpass on 4.
12:42:31 ::	Shader Factory: Texture format accepted.
12:42:31 ::	Shader Factory: Created texture depthframe on 5.
12:42:31 ::	Shader Factory: Texture format accepted.
12:42:31 ::	Shader Factory: Created texture error.png on 6.
12:42:31 ::	Shader Factory: Loaded texture error.png on 003EE478.
12:42:31 ::	Shader Factory: Setup complete.
12:42:31 ::	NWShader: Compiling shaders...
12:42:31 ::	Shader Manager FS: Loaded shaders.
12:42:31 ::	Set up DirectInput interface.
12:42:34 ::	NWShader: Making null context current.
12:42:34 ::	NWShader: Process deleting cached context.
12:42:35 ::	NWShader: Creating context.
12:42:35 ::	NWShader: does not have cached device/context. Grabbing...
12:42:35 ::	NWShader: Initializing system...
12:42:35 ::	NWShader: The double-start bug has struck. Attempting to reinit...
12:42:35 ::	Config: Config file read.
12:42:35 ::	  GUI
12:42:35 ::	  Settings
12:42:35 ::	    TintWorld = false
12:42:35 ::	    DebugLevel = 0
12:42:35 ::	Config: Reading shaders list.
12:42:35 ::	Config: Error parsing shader.
12:42:35 ::	Config: Done parsing config file.
12:42:35 ::	NWShader was unable to load the language file for d.
12:42:35 ::	NWShader: Hooking into engine...
12:42:35 ::	NWShader: Hooked engine functions.
12:42:35 ::	Viewport info: 0; 0; 1680; 1050
12:42:35 ::	GLEW: Started successfully.
12:42:35 ::	DevIL: Started successfully.
12:42:35 ::	Shader Factory: Starting Cg...
12:42:35 ::	Cg: Using version 2.2.0010
12:42:35 ::	Cg: Profile VP20 is not supported.
12:42:35 ::	Cg: Profile FP20 is not supported.
12:42:35 ::	Cg: Profile VP30 is not supported.
12:42:35 ::	Cg: Profile FP30 is not supported.
12:42:35 ::	Cg: Profile VP40 is not supported.
12:42:35 ::	Cg: Profile FP40 is not supported.
12:42:35 ::	Cg: Profile GPU_VP is not supported.
12:42:35 ::	Cg: Profile GPU_FP is not supported.
12:42:35 ::	Cg: Profile GP4VP is not supported.
12:42:35 ::	Cg: Profile GP4FP is not supported.
12:42:35 ::	NWShader: Creating textures...
12:42:35 ::	NWShader: Framebuffers disabled in config.
12:42:35 ::	Shader Factory: Texture format accepted.
12:42:35 ::	Shader Factory: Created texture thisframe on 1.
12:42:35 ::	Shader Factory: Texture format accepted.
12:42:35 ::	Shader Factory: Created texture lastframe on 2.
12:42:35 ::	Shader Factory: Texture format accepted.
12:42:35 ::	Shader Factory: Created texture lastshader on 3.
12:42:35 ::	Shader Factory: Texture format accepted.
12:42:35 ::	Shader Factory: Created texture lastpass on 4.
12:42:35 ::	Shader Factory: Texture format accepted.
12:42:35 ::	Shader Factory: Created texture depthframe on 5.
12:42:35 ::	Shader Factory: Texture format accepted.
12:42:35 ::	Shader Factory: Created texture error.png on 6.
12:42:35 ::	Shader Factory: Loaded texture error.png on 003EFFD0.
12:42:35 ::	Shader Factory: Setup complete.
12:42:35 ::	NWShader: Compiling shaders...
12:42:35 ::	Shader Manager FS: Loaded shaders.
12:42:35 ::	Set up DirectInput interface.
12:43:29 ::	NWShader: Making null context current.
12:43:29 ::	NWShader: Process deleting cached context.
12:43:29 ::	NWShader: Stopping...
- Closing log file (dtor)

Regards
R-TEAM

#124
JediMindTrix

JediMindTrix
  • Members
  • 283 messages
Is it possible to remove the overlay 'nwshader'? Makes it hard to play on my small screen >.<