Welcome, Guest.
Username: Password: Remember me

TOPIC: Namespaces

Namespaces 1 year 8 months ago #1

  • crosire
  • crosire's Avatar
  • Offline
  • Posts: 2438
  • Thank you received: 1385
The next update adds a new useful feature to ReShade's shader language: namespaces. Developers knowing C++, C# and similar languages are familar with the concept already. It basically allows you to encapsulate variables/functions with the same name in different naming spaces and then access them.

Example:
// global namespace
float4 Func() { return float4(1, 0, 0, 1); /* red */ }

namespace NS1
{
	// NS1 namespace
	float4 Func() { return float4(0, 1, 0, 1); /* green */ }

	namespace NS2
	{
		// NS2 namespace
		float4 Func() { return float4(0, 0, 1, 1); /* blue */ }
	}
 
	float4 FuncCaller()
	{
		float4 color;

		color = Func(); // color is green, since best match is Func in the current NS1 namespace
		color = NS2::Func(); // color is blue, since we access Func from the NS2 namespace here
		color = NS1::NS2::Func(); // color is blue, same as the previous, we just specify the full name here

		// prefixing with "::" accesses the global namespace
		color = ::Func(); // color is red, since this accesses Func in the global namespace
		color = ::NS1::Func(); // color is green, because we access Func in the NS1 namespace here

		return color;
	}
}
Cheers, crosire =)
The administrator has disabled public write access.
The following user(s) said Thank You: jmp909