Subversion Repository Public Repository

Divide-Dependencies

This repository has no backups
This repository's network speed is throttled to 100KB/sec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef LIGHTING_CG
#define LIGHTING_CG

#include <config.cg>
#include <globals.cg>

// Internal Lighting functions...
Lighting computeAmbientLight(    const FragmentParameters params, const SurfaceMaterial material);
Lighting computeDirectionalLight(const FragmentParameters params, const SurfaceMaterial material);
Lighting computePointLight(      const FragmentParameters params, const SurfaceMaterial material);
Lighting computeSpotLight(       const FragmentParameters params, const SurfaceMaterial material);

#if defined(PASS_SUPPORTS_SHADOWS)
#define NUM_SHADOW_OFFSETS 32
static float2 shadowMapOffsets[NUM_SHADOW_OFFSETS] =
{
	float2( 0.024439,-0.191747), float2( 0.127369, 0.462646), float2( 0.769628,-0.291028), float2(-0.684950, 0.518250),
	float2( 0.019485, 0.303360), float2(-0.234805,-0.278718), float2(-0.679808,-0.717623), float2(-0.004622,-0.000659),
	float2(-0.128309,-0.515931), float2( 0.497521, 0.347996), float2( 0.197836,-0.405042), float2(-0.576391,-0.192435),
	float2( 0.379497, 0.355307), float2( 0.642894,-0.338695), float2( 0.368096, 0.394195), float2(-0.024818,-0.234009),
	float2(-0.487682, 0.608270), float2( 0.822138, 0.568698), float2(-0.184849, 0.191561), float2( 0.020395,-0.012156),
	float2(-0.647774,-0.197404), float2(-0.681738,-0.615919), float2(-0.418447,-0.412937), float2( 0.632155, 0.357966),
	float2(-0.742742,-0.038003), float2(-0.759170,-0.569653), float2(-0.508216, 0.317101), float2( 0.547166,-0.267258),
	float2(-0.134347, 0.070130), float2(-0.210947,-0.774648), float2( 0.751069, 0.026197), float2(-0.595643,-0.277915),
};
#endif

float computeShadowTerm(const FragmentParameters params)
{
	float shadowMask = 1;
#if defined(PASS_SUPPORTS_SHADOWS) && ENABLE_SHADOWS
	const float shadowDepthBias = 0.02;
	const float depthBias = 0.00006;

#if 0

	float4 lsp = mul(float4(params.worldSpacePosition, 1), g_lightShadowMatrix);
	lsp = float4(float2(0.5,-0.5)*lsp.xy/lsp.w + 0.5, lsp.z/lsp.w - depthBias, 1);
	shadowMask = tex2Dproj(g_lightShadowMap, lsp).x;
#elif 1

	const float shadowOffsetScale = 0.005;
	float4 lsp = mul(float4(params.worldSpacePosition, 1), g_lightShadowMatrix);
	lsp = float4(float2(0.5,-0.5)*lsp.xy/lsp.w + 0.5, lsp.z/lsp.w - depthBias, 1);
	shadowMask = 0;
	for(int i=0; i<NUM_SHADOW_OFFSETS; i++)
	{
		float4 texcoord = lsp+float4(shadowMapOffsets[i]*shadowOffsetScale, 0,0);
		shadowMask += tex2Dproj(g_lightShadowMap, texcoord).x;
	}
	shadowMask /= NUM_SHADOW_OFFSETS;

#else

	const float fragmentDepth = length(g_lightPosition-params.worldSpacePosition)-shadowDepthBias;
	float4 lsp = mul(float4(params.worldSpacePosition, 1), g_lightShadowMatrix);
	lsp = float4(float2(0.5,-0.5)*lsp.xy/lsp.w + 0.5, lsp.z/lsp.w - depthBias, 1);
	const float shadowOffsetScale = 0.002;

	float4 shadowSpacePosition = mul(float4(params.worldSpacePosition, 1), g_lightShadowMatrix);
	float2 shadowUV = float2(0.5,-0.5) * shadowSpacePosition.xy / shadowSpacePosition.w + float2(0.5, 0.5);
	for(int i=0; i<NUM_SHADOW_OFFSETS/4; i++)
	{
		float4 shadowMapColor;
		shadowMapColor.r = tex2D(g_lightShadowMap, (shadowUV+shadowMapOffsets[i*4+0]*shadowOffsetScale)).r;
		shadowMapColor.g = tex2D(g_lightShadowMap, (shadowUV+shadowMapOffsets[i*4+1]*shadowOffsetScale)).r;
		shadowMapColor.b = tex2D(g_lightShadowMap, (shadowUV+shadowMapOffsets[i*4+2]*shadowOffsetScale)).r;
		shadowMapColor.a = tex2D(g_lightShadowMap, (shadowUV+shadowMapOffsets[i*4+3]*shadowOffsetScale)).r;
		for(int j=0; j<4; j++)
		{
			if(shadowMapColor[j] < lsp.z)
			{
				shadowMask -= (1.0f/NUM_SHADOW_OFFSETS);
			}
		}
	}

#endif

#endif
	return shadowMask;
}

Lighting computeLighting(const FragmentParameters params, const SurfaceMaterial material)
{
	Lighting lout;

#if defined(PASS_AMBIENT_LIGHT)
	lout = computeAmbientLight(params, material);
#elif defined(PASS_DIRECTIONAL_LIGHT)
	lout = computeDirectionalLight(params, material);
#elif defined(PASS_POINT_LIGHT)
	lout = computePointLight(params, material);
#elif defined(PASS_SPOT_LIGHT) || defined(PASS_SPOT_LIGHT_NO_SHADOW)
	lout = computeSpotLight(params, material);
#endif

	const float shadowTerm = computeShadowTerm(params);
	lout.diffuseColor  *= (half)shadowTerm;
	lout.specularColor *= (half)shadowTerm;

	lout.diffuseColor += (half3)g_ambientColor * material.diffuseColor;

	return lout;
}

#endif

Commits for Divide-Dependencies/physx/APEX_1.4/media/SampleRenderer/4/shaders/include/lighting.cg

Diff revisions: vs.
Revision Author Commited Message
105 IonutCava picture IonutCava Tue 16 Apr, 2019 19:55:41 +0000

Forgot to actually add physx