Add StormEngine2 shaders and materials, mention it in README

This commit is contained in:
Daniel Gibson 2021-05-11 05:25:19 +02:00
parent 944ff12aab
commit 056fb2c30d
56 changed files with 5610 additions and 0 deletions

View file

@ -1,3 +1,29 @@
# dhewm3 branch of StormEngine2
Before StormEngine2 switched to (RB)Doom3BFG, it was based on dhewm3.
This branch contains all the changes, based on the same old dhewm3 commit it (apparently) used.
Furthermore, in `base/` you can find its materials and shaders.
* The shaders (`base/glprogs/*`) are released under GPLv3 (same as Doom3 sourcecode).
* The materials (`base/materials/*`) are released under
[*CreativeCommons Attribution-ShareAlike*](https://creativecommons.org/licenses/by-sa/4.0/) (**CC BY-SA 4.0**).
Thanks a lot to **motorsep** for donating this code and game data!
Some features this code (together with the shaders) have, that standard Doom3 and dhewm3 don't:
- soft particles with custom translucency sorting and fogging
- ink/cel shading
- image-based bloom
- blurry reflections
- Fresnel
- *maybe* improved heat haze
- improved vehicles
- LODs
--------------------
Below: original dhewm3 ReadMe:
# ABOUT
_dhewm 3_ is a _Doom 3_ GPL source modification.

View file

@ -0,0 +1,3 @@
interaction.vfp : Toon + Specular (needs to be controlled by the materials) + Improved ambient
interaction_nospecular.vfp : Toon with no Specular
interaction_original.vfp : Original shader compatible with Doom 3

View file

@ -0,0 +1,83 @@
# Normal-Mapped CubeMap Lookup Vertex Program
#
# Vertex Attributes
# 9 tangent(?)
# 10 bitangent(?)
#
# Environment Values
# 5 local view position
# 6 modelMatrix[0]
# 7 modelMatrix[1]
# 8 modelMatrix[2]
!!ARBvp1.0
OPTION ARB_position_invariant;
TEMP R0;
# tc0 : normal-map UV
MOV result.texcoord[0], vertex.texcoord[0];
SUB R0, program.env[5], vertex.position;
# tc1 : view vector in global space
DP3 result.texcoord[1].x, program.env[6], R0;
DP3 result.texcoord[1].y, program.env[7], R0;
DP3 result.texcoord[1].z, program.env[8], R0;
# tc2-4 : tangent-space to global-space matrix
DP3 result.texcoord[2].x, program.env[6], vertex.attrib[9];
DP3 result.texcoord[3].x, program.env[7], vertex.attrib[9];
DP3 result.texcoord[4].x, program.env[8], vertex.attrib[9];
DP3 result.texcoord[2].y, program.env[6], vertex.attrib[10];
DP3 result.texcoord[3].y, program.env[7], vertex.attrib[10];
DP3 result.texcoord[4].y, program.env[8], vertex.attrib[10];
DP3 result.texcoord[2].z, program.env[6], vertex.normal;
DP3 result.texcoord[3].z, program.env[7], vertex.normal;
DP3 result.texcoord[4].z, program.env[8], vertex.normal;
MOV result.color, vertex.color;
END
# Normal-Mapped CubeMap Lookup Fragment Program
#
# Textures
# 0 environment cubemap
# 1 normalmap
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP globalEye, localNormal, globalNormal, reflVec, R0;
# load normal map and normalize
TEX localNormal, fragment.texcoord[0], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
DP3 R0.x, localNormal, localNormal;
RSQ R0.x, R0.x;
MUL localNormal.xyz, R0.x, localNormal;
# normalize global view vector
DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1];
RSQ R0.x, R0.x;
MUL globalEye, R0.x, fragment.texcoord[1];
# transform local normal to global space
DP3 globalNormal.x, fragment.texcoord[2], localNormal;
DP3 globalNormal.y, fragment.texcoord[3], localNormal;
DP3 globalNormal.z, fragment.texcoord[4], localNormal;
# construct reflection vector and look up cubemap
DP3 R0.x, globalNormal, globalEye;
MUL reflVec, R0.x, globalNormal;
MAD reflVec, reflVec, 2.0, -globalEye;
TEX result.color.xyz, reflVec, texture[0], CUBE;
END

View file

@ -0,0 +1,120 @@
# Normal-Mapped Refraction Vertex Program
#
# Local Values
# 0 UV scrolling values
# 1 magnitude of deformation
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM clearVec = { 1.0, 0.0, 0.0, 1.0 };
TEMP R0, R1;
# tc0 : scrolled texture coordinates
ADD result.texcoord[0].xy, vertex.texcoord[0], program.local[0];
# tc1 : deformation magnitude scaled by projection distance
MOV R0, clearVec;
DP4 R0.z, state.matrix.modelview.row[2], vertex.position;
DP4 R1.x, state.matrix.projection.row[0], R0;
DP4 R1.y, state.matrix.projection.row[3], R0;
MAX R1.y, R1, 1.0;
RCP R1.y, R1.y;
MUL R1.x, R1.x, R1.y;
MIN R1.x, R1, 0.02;
MUL result.texcoord[1], R1.x, program.local[1];
MOV result.texcoord[2], program.local[2];
MOV result.texcoord[3], program.local[3];
END
# Normal-Mapped Refraction Fragment Program
#
# Textures
# 0 _currentRender
# 1 normalmap
#
# Environment Values
# 0 screen non power of two adjust
# 1 fragment.position to 0.0-1.0 screen coordinates factor
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0, localNormal, basePos, sPos, outCol;
PARAM off1 = { -1.0, 0.0, 1.0, 1.0 };
# load normalmap
TEX localNormal, fragment.texcoord[0], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
PARAM weight = { 0.1111111,1,1,1 };
# offset normalized screen coordinates by scaled normal, then apply npot adjustment
MUL basePos.xy, fragment.position, program.env[1];
MAD_SAT basePos.xy, localNormal, fragment.texcoord[1], basePos;
TEX outCol.xyz, basePos, texture[0], 2D;
MUL outCol.xyz, outCol, weight.x;
TEMP offs;
MUL offs.xy, fragment.texcoord[2].xyyy, fragment.texcoord[2].z;
MOV sPos.z, 0;
MOV sPos.w, fragment.texcoord[2].w;
# everything's a blur ( 3x3 box )
# 1
MAD sPos.xy, off1.xxxx, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 2
MAD sPos.xy, off1.xyyy, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 3
MAD sPos.xy, off1.xzzz, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 4
MAD sPos.xy, off1.yxxx, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 5
MAD sPos.xy, off1.yzzz, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 6
MAD sPos.xy, off1.zxxx, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 7
MAD sPos.xy, off1.zyyy, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
# 8
MAD sPos.xy, off1.zzzz, offs, basePos;
#TEX R0.xyz, sPos, texture[0], 2D;
TXB R0.xyz, sPos, texture[0], 2D;
MAD outCol.xyz, R0, weight.x, outCol;
MUL outCol.xyz, outCol, fragment.texcoord[3].x;
MOV result.color.xyz, outCol;
END

115
base/glprogs/depthTest.vfp Normal file
View file

@ -0,0 +1,115 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
# cgc version 3.1.0013, build date Apr 18 2012
# command line args: -profile arbvp1 -posinv
# source file: inkCustom_vert.cg
#vendor NVIDIA Corporation
#version 3.1.0.13
#profile arbvp1
#program main
#semantic main.inParms : C0
#semantic main.inParms2 : C1
#semantic main.inParms3 : C2
#semantic main.inParms4 : C3
#var float4 inParms : C0 : c[0] : 0 : 1
#var float4 inParms2 : C1 : c[1] : 1 : 1
#var float4 inParms3 : C2 : c[2] : 2 : 1
#var float4 inParms4 : C3 : c[3] : 3 : 1
#var float4 genParms : $vout.TEXCOORD4 : TEX4 : 4 : 1
#var float4 genParms2 : $vout.TEXCOORD5 : TEX5 : 5 : 1
#var float4 genParms3 : $vout.TEXCOORD6 : TEX6 : 6 : 1
#var float4 genParms4 : $vout.TEXCOORD7 : TEX7 : 7 : 1
PARAM c[4] = { program.local[0..3] };
MOV result.texcoord[4], c[0];
MOV result.texcoord[5], c[1];
MOV result.texcoord[6], c[2];
MOV result.texcoord[7], c[3];
END
# 4 instructions, 0 R-regs
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
# cgc version 3.1.0013, build date Apr 18 2012
# command line args: -profile arbfp1 -fastmath -fastprecision
# source file: inkCustom_frag.cg
#vendor NVIDIA Corporation
#version 3.1.0.13
#profile arbfp1
#program main
#semantic main.screenAdjust : ENV1
#semantic main.depthImage : TEXUNIT0
#var float4 screenAdjust : ENV1 : env[1] : 0 : 1
#var sampler2D depthImage : TEXUNIT0 : texunit 0 : 1 : 1
#var float4 genParms : $vin.TEXCOORD4 : TEX4 : 2 : 1
#var float4 genParms2 : $vin.TEXCOORD5 : : 3 : 0
#var float4 genParms3 : $vin.TEXCOORD6 : : 4 : 0
#var float4 genParms4 : $vin.TEXCOORD7 : TEX7 : 5 : 1
#var float2 fragPos : $vin.WPOS : WPOS : 6 : 1
#var float4 outColor : $vout.COLOR : COL : 7 : 1
#const c[0] = 1 2995 3000 -15000
#const c[1] = 256 0.0078125 -1 0
#const c[2] = 1 0 2 -1
#const c[3] = 0.25
PARAM c[4] = { { 1, 2995, 3000, -15000 },
{ 256, 0.0078125, -1, 0 },
{ 1, 0, 2, -1 },
{ 0.25 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
MUL R0.zw, fragment.position.xyxy, env[1].xyxy;
TEX R0.x, R0.zwzw, texture[0], 2D;
MAD R0.y, R0.x, c[0], -c[0].z;
RCP R0.y, R0.y;
MOV R1.z, fragment.texcoord[4].x;
MAD R1.x, R0.y, c[0].w, -fragment.texcoord[7].y;
RCP R1.y, fragment.texcoord[7].z;
MUL_SAT R1.x, R1, R1.y;
ADD R1.z, fragment.texcoord[7].x, -R1;
MAD R1.y, R1.x, R1.z, fragment.texcoord[4].x;
MAD R2.xy, R1.y, c[1].wzzw, R0.zwzw;
MAD R1.zw, R1.y, c[2].xyyx, R0;
TEX R1.x, R2, texture[0], 2D;
TEX R2.x, R1.zwzw, texture[0], 2D;
ADD R1.z, -R0.x, R1.x;
ADD R1.x, R0, -R2;
ADD R2.z, R1.x, -R1;
MAD R2.xy, R1.y, c[2], R0.zwzw;
MAD R1.zw, R1.y, c[1], R0;
TEX R1.x, R2, texture[0], 2D;
TEX R2.x, R1.zwzw, texture[0], 2D;
ADD R1.z, -R0.x, R1.x;
ADD R1.x, R0, -R2;
ADD R1.x, R1, -R1.z;
MAD R2.xy, R1.y, c[2].xwzw, R0.zwzw;
MAD_SAT R1.z, -R2, c[2], fragment.texcoord[7].w;
MAD_SAT R1.x, -R1, c[2].z, fragment.texcoord[7].w;
ADD R2.z, R1.x, R1;
MAD R1.zw, R1.y, c[2].xywx, R0;
TEX R1.x, R2, texture[0], 2D;
TEX R2.x, R1.zwzw, texture[0], 2D;
ADD R1.z, -R0.x, R1.x;
ADD R1.x, R0, -R2;
ADD R2.y, R1.x, -R1.z;
ADD R1.zw, R0, R1.y;
ADD R0.zw, R0, -R1.y;
TEX R2.x, R0.zwzw, texture[0], 2D;
TEX R1.x, R1.zwzw, texture[0], 2D;
ADD R0.z, -R0.x, R1.x;
ADD R0.x, R0, -R2;
ADD R0.z, R0.x, -R0;
MAD_SAT R0.x, -R2.y, c[2].z, fragment.texcoord[7].w;
ADD R0.x, R2.z, R0;
MAD_SAT R0.z, -R0, c[2], fragment.texcoord[7].w;
ADD R0.z, R0.x, R0;
MUL R0.x, R0.y, c[0].w;
MAD R0.y, -R0.z, c[3].x, R0.z;
ADD R0.x, R0, -c[1];
MUL R0.z, R0, c[3].x;
MUL_SAT R0.x, R0, c[1].y;
MAD R0.x, R0, R0.y, R0.z;
MUL_SAT R0.x, R0, fragment.texcoord[4].z;
MAD result.color.xyz, -R0.x, fragment.texcoord[4].y, c[0].x;
MOV result.color.w, c[0].x;
END
# 54 instructions, 3 R-regs

View file

@ -0,0 +1,22 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[6] = { program.local[0..5] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { 1 } };
TEMP R0;
TEMP R1;
RCP R0.x, fragment.position.w;
MUL R0.x, fragment.position.z, R0;
MAD_SAT R1.x, R0, fragment.texcoord[2], fragment.texcoord[2].y;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
ADD R1.x, -R1, c[0];
MUL result.color.xyz, R0, R1.x;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,34 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[7] = { program.local[0..6] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.texcoord[3], c[2];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 1, 2995, 3000 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
MUL R0.xy, fragment.position, env[1];
TEX R1.x, R0, texture[1], 2D;
MAD R1.x, R1, c[0].z, -c[0].w;
RCP R1.y, R1.x;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
MAD R1.z, fragment.position, c[0], -c[0].w;
RCP R1.z, R1.z;
ADD R1.y, R1, -R1.z;
RCP R1.x, fragment.position.w;
MUL R1.x, fragment.position.z, R1;
MUL R1.y, R1, fragment.texcoord[3].x;
MAD_SAT R1.z, R1.x, fragment.texcoord[2].x, fragment.texcoord[2].y;
MUL_SAT R1.x, R1.y, c[0];
ADD R1.y, -R1.z, c[0];
MUL R1.x, R1.y, R1;
MUL result.color.xyz, R0, R1.x;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,37 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[8] = { program.local[0..7] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.texcoord[3], c[2];
MOV result.texcoord[4], c[3];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 1, 2995, 3000 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
MUL R1.xy, fragment.position, env[1];
TEX R1.x, R1, texture[1], 2D;
MAD R1.x, R1, c[0].z, -c[0].w;
RCP R1.y, R1.x;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
MAD R1.z, fragment.position, c[0], -c[0].w;
RCP R1.z, R1.z;
ADD R1.y, R1, -R1.z;
RCP R1.x, fragment.position.w;
MUL R1.x, fragment.position.z, R1;
MAD_SAT R1.z, R1.x, fragment.texcoord[2].x, fragment.texcoord[2].y;
MUL R1.y, R1, fragment.texcoord[3].x;
MUL_SAT R1.y, R1, c[0].x;
ADD R1.z, -R1, c[0].y;
MUL R1.y, R1.z, R1;
MAD_SAT R1.x, R1, fragment.texcoord[4], fragment.texcoord[4].y;
MUL R0.xyz, R0, R1.y;
MUL result.color.xyz, R0, R1.x;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,21 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[6] = { program.local[0..5] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0;
TEMP R1;
RCP R1.x, fragment.position.w;
MUL R1.w, fragment.position.z, R1.x;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
ADD R1.xyz, fragment.texcoord[1], -R0;
MAD_SAT R1.w, R1, fragment.texcoord[2].x, fragment.texcoord[2].y;
MAD result.color.xyz, R1.w, R1, R0;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,34 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[7] = { program.local[0..6] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.texcoord[3], c[2];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 2995, 3000 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
MUL R2.xy, fragment.position, env[1];
TEX R2.x, R2, texture[1], 2D;
MAD R1.w, R2.x, c[0].y, -c[0].z;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
MAD R2.y, fragment.position.z, c[0], -c[0].z;
RCP R1.w, R1.w;
RCP R2.x, R2.y;
ADD R2.x, R1.w, -R2;
RCP R1.w, fragment.position.w;
MUL R2.x, R2, fragment.texcoord[3];
MUL R1.w, fragment.position.z, R1;
MUL_SAT R2.x, R2, c[0];
ADD R1.xyz, -R0, fragment.texcoord[1];
MAD_SAT R1.w, R1, fragment.texcoord[2].x, fragment.texcoord[2].y;
MAD result.color.xyz, R1.w, R1, R0;
MUL result.color.w, R0, R2.x;
END

View file

@ -0,0 +1,37 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[8] = { program.local[0..7] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.texcoord[3], c[2];
MOV result.texcoord[4], c[3];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 2995, 3000 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
MUL R1.xy, fragment.position, env[1];
TEX R2.x, R1, texture[1], 2D;
MAD R1.w, R2.x, c[0].y, -c[0].z;
RCP R2.x, R1.w;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
MAD R2.y, fragment.position.z, c[0], -c[0].z;
RCP R2.y, R2.y;
ADD R2.x, R2, -R2.y;
RCP R1.w, fragment.position.w;
MUL R1.w, fragment.position.z, R1;
ADD R1.xyz, -R0, fragment.texcoord[1];
MAD_SAT R2.y, R1.w, fragment.texcoord[2].x, fragment.texcoord[2];
MAD result.color.xyz, R2.y, R1, R0;
MUL R2.x, R2, fragment.texcoord[3];
MUL_SAT R0.x, R2, c[0];
MAD_SAT R0.y, R1.w, fragment.texcoord[4].x, fragment.texcoord[4];
MUL R0.x, R0.w, R0;
MUL result.color.w, R0.x, R0.y;
END

View file

@ -0,0 +1,22 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[6] = { program.local[0..5] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { 1 } };
TEMP R0;
TEMP R1;
RCP R1.x, fragment.position.w;
MUL R1.w, fragment.position.z, R1.x;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
ADD R1.xyz, -R0, c[0].x;
MAD_SAT R1.w, R1, fragment.texcoord[2].x, fragment.texcoord[2].y;
MAD result.color.xyz, R1.w, R1, R0;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,35 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[7] = { program.local[0..6] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.texcoord[3], c[2];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 2995, 3000, 1 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
MUL R2.xy, fragment.position, env[1];
TEX R2.x, R2, texture[1], 2D;
MAD R1.w, R2.x, c[0].y, -c[0].z;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
MAD R2.y, fragment.position.z, c[0], -c[0].z;
RCP R1.w, R1.w;
RCP R2.x, R2.y;
ADD R2.x, R1.w, -R2;
RCP R1.w, fragment.position.w;
MUL R2.x, R2, fragment.texcoord[3];
MUL R1.w, fragment.position.z, R1;
ADD R1.xyz, -R0, c[0].w;
MUL_SAT R2.x, R2, c[0];
MAD_SAT R1.w, R1, fragment.texcoord[2].x, fragment.texcoord[2].y;
MUL R1.w, R1, R2.x;
MAD result.color.xyz, R1.w, R1, R0;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,39 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[8] = { program.local[0..7] };
MOV result.texcoord[1], c[0];
MOV result.texcoord[2], c[1];
MOV result.texcoord[3], c[2];
MOV result.texcoord[4], c[3];
MOV result.color, vertex.color;
MOV result.texcoord[0].xy, vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 2995, 3000, 1 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
MUL R1.xy, fragment.position, env[1];
TEX R2.x, R1, texture[1], 2D;
MAD R1.w, R2.x, c[0].y, -c[0].z;
RCP R2.x, R1.w;
TEX R0, fragment.texcoord[0], texture[0], 2D;
MUL R0, R0, fragment.color.primary;
MAD R2.y, fragment.position.z, c[0], -c[0].z;
RCP R2.y, R2.y;
ADD R2.x, R2, -R2.y;
RCP R1.w, fragment.position.w;
MUL R1.w, fragment.position.z, R1;
MAD_SAT R2.y, R1.w, fragment.texcoord[4].x, fragment.texcoord[4];
MUL R2.x, R2, fragment.texcoord[3];
ADD R1.xyz, -R0, c[0].w;
MUL_SAT R2.x, R2, c[0];
MAD_SAT R1.w, R1, fragment.texcoord[2].x, fragment.texcoord[2].y;
ADD R2.y, -R2, c[0].w;
MUL R1.w, R1, R2.x;
MAX R1.w, R1, R2.y;
MAD result.color.xyz, R1.w, R1, R0;
MOV result.color.w, R0;
END

View file

@ -0,0 +1,69 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[5] = { program.local[0..3],
{ 0.14285715 } };
TEMP R0;
MOV R0.x, c[0];
MOV result.texcoord[0], vertex.texcoord[0];
MOV result.texcoord[4].xzw, c[0];
MUL result.texcoord[4].y, R0.x, c[4].x;
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[3] = { { 0, 0.015625, 0.03125, 0.046875 },
{ 0.0625, 0.078125, 0.09375, 0.109375 },
{ 0.125 } };
TEMP R0;
TEMP R1;
TEMP R2;
TEMP R3;
MOV R2.y, c[0].x;
MOV R2.x, fragment.texcoord[4].y;
MOV R0.y, c[0].x;
MOV R0.x, fragment.texcoord[4];
ADD R3.xy, fragment.texcoord[0], -R0;
ADD R1.xy, R3, R2;
ADD R2.zw, R1.xyxy, R2.xyxy;
TEX R0.xyz, R1, texture[0], 2D;
MUL R1.xyz, R0, c[0].z;
TEX R0.xyz, R3, texture[0], 2D;
MAD R0.xyz, R0, c[0].y, R1;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[0].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[1].x, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].y, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[1].z, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[2].x, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[1].z, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].y, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].x, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
MAD R0.xyz, R1, c[0].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
MAD R0.xyz, R1, c[0].z, R0;
ADD R2.xy, R3, R2;
TEX R1.xyz, R2, texture[0], 2D;
MAD result.color.xyz, R1, c[0].y, R0;
END

View file

@ -0,0 +1,69 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[5] = { program.local[0..3],
{ 0.14285715 } };
TEMP R0;
MOV R0.x, c[0];
MOV result.texcoord[0], vertex.texcoord[0];
MUL result.texcoord[4].y, R0.x, c[4].x;
MOV result.texcoord[4].x, c[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[3] = { { 0, 0.015625, 0.03125, 0.046875 },
{ 0.0625, 0.078125, 0.09375, 0.109375 },
{ 0.125 } };
TEMP R0;
TEMP R1;
TEMP R2;
TEMP R3;
MOV R2.y, fragment.texcoord[4];
MOV R2.x, c[0];
MOV R0.y, fragment.texcoord[4].x;
MOV R0.x, c[0];
ADD R3.xy, fragment.texcoord[0], -R0;
ADD R1.xy, R3, R2;
ADD R2.zw, R1.xyxy, R2.xyxy;
TEX R0.xyz, R1, texture[0], 2D;
MUL R1.xyz, R0, c[0].z;
TEX R0.xyz, R3, texture[0], 2D;
MAD R0.xyz, R0, c[0].y, R1;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[0].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[1].x, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].y, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[1].z, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[2].x, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
MAD R0.xyz, R1, c[1].z, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].y, R0;
TEX R1.xyz, R3, texture[0], 2D;
ADD R2.zw, R3.xyxy, R2.xyxy;
ADD R3.xy, R2.zwzw, R2;
MAD R0.xyz, R1, c[1].x, R0;
TEX R1.xyz, R2.zwzw, texture[0], 2D;
MAD R0.xyz, R1, c[0].w, R0;
TEX R1.xyz, R3, texture[0], 2D;
MAD R0.xyz, R1, c[0].z, R0;
ADD R2.xy, R3, R2;
TEX R1.xyz, R2, texture[0], 2D;
MAD result.color.xyz, R1, c[0].y, R0;
END

24
base/glprogs/glowComp.vfp Normal file
View file

@ -0,0 +1,24 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[4] = { program.local[0..3] };
MOV result.texcoord[0], vertex.texcoord[0];
MOV result.texcoord[4], c[0];
MOV result.texcoord[5], c[1];
MOV result.texcoord[6], c[2];
MOV result.texcoord[7], c[3];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { 1 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
MUL R0.xy, fragment.position, env[0];
MUL R0.xy, R0, env[1];
TEX R0.xyz, R0, texture[0], 2D;
TEX R1.xyz, fragment.texcoord[0], texture[1], 2D;
MAD R1.xyz, fragment.texcoord[4].x, R1, R0;
TEX R0.xyz, fragment.texcoord[0], texture[2], 2D;
MAD result.color.xyz, R0, fragment.texcoord[4].y, R1;
MOV result.color.w, c[0].x;
END

61
base/glprogs/heatHaze.vfp Normal file
View file

@ -0,0 +1,61 @@
# Normal-Mapped Refraction Vertex Program
#
# Local Values
# 0 UV scrolling values
# 1 magnitude of deformation
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM clearVec = { 1.0, 0.0, 0.0, 1.0 };
TEMP R0, R1, R2;
# tc0 : scrolled texture coordinates
ADD result.texcoord[0].xy, vertex.texcoord[0], program.local[0];
# tc1 : deformation magnitude scaled by projection distance
MOV R0, clearVec;
DP4 R0.z, state.matrix.modelview.row[2], vertex.position;
DP4 R1.x, state.matrix.projection.row[0], R0;
DP4 R1.y, state.matrix.projection.row[3], R0;
MAX R1.y, R1, 1.0;
RCP R1.y, R1.y;
MUL R1.x, R1.x, R1.y;
MIN R1.x, R1, 0.02;
MUL result.texcoord[1], R1.x, program.local[1];
END
# Normal-Mapped Refraction Fragment Program
#
# Textures
# 0 _currentRender
# 1 normalmap
#
# Environment Values
# 0 screen non power of two adjust
# 1 fragment.position to 0.0-1.0 screen coordinates factor
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0, localNormal;
# load normalmap
TEX localNormal, fragment.texcoord[0], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
# offset normalized screen coordinates by scaled normal, then apply npot adjustment
MUL R0.xy, fragment.position, program.env[1];
MAD_SAT R0.xy, localNormal, fragment.texcoord[1], R0;
MUL R0.xy, R0, program.env[0];
# look up _currentRender
TEX result.color.xyz, R0, texture[0], 2D;
END

View file

@ -0,0 +1,74 @@
# Normal-Mapped Masked Refraction Vertex Program
#
# Local Values
# 0 UV scrolling values
# 1 magnitude of deformation
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM clearVec = { 1.0, 0.0, 0.0, 1.0 };
TEMP R0, R1, R2;
# tc0 : unmodified UV
MOV result.texcoord[0].xy, vertex.texcoord[0];
# tc1 : scrolled UV
ADD result.texcoord[1].xy, vertex.texcoord[0], program.local[0];
# tc2 : deformation magnitude scaled by projection distance
MOV R0, clearVec;
DP4 R0.z, state.matrix.modelview.row[2], vertex.position;
DP4 R1.x, state.matrix.projection.row[0], R0;
DP4 R1.y, state.matrix.projection.row[3], R0;
MAX R1.y, R1, 1.0;
RCP R1.y, R1.y;
MUL R1.x, R1.x, R1.y;
MIN R1.x, R1, 0.02;
MUL result.texcoord[2], R1.x, program.local[1];
END
# Normal-Mapped Masked Refraction Fragment Program
#
# Textures
# 0 _currentRender
# 1 normalmap
# 2 mask texture
#
# Environment Values
# 0 screen non power of two adjust
# 1 fragment.position to 0.0-1.0 screen coordinates factor
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0, localNormal, maskTex;
PARAM subOne = { -1, -1, -1, -1 };
PARAM scaleTwo = { 2, 2, 2, 2 };
# load mask texture, skip pixel if value too low
TEX maskTex.xy, fragment.texcoord[0], texture[2], 2D;
SUB maskTex.xy, maskTex, 0.01;
KIL maskTex;
# load normalmap and adjust by mask
TEX localNormal, fragment.texcoord[1], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
MUL localNormal, localNormal, maskTex;
# offset normalized screen coordinates by scaled normal, then apply npot adjustment
MUL R0.xy, fragment.position, program.env[1];
MAD_SAT R0.xy, localNormal, fragment.texcoord[2], R0;
MUL R0.xy, R0, program.env[0];
# look up _currentRender
TEX result.color.xyz, R0, texture[0], 2D;
END

View file

@ -0,0 +1,77 @@
# Normal-Mapped Masked ( Texture and Vertex Color ) Refraction Vertex Program
#
# Local Values
# 0 UV scrolling values
# 1 magnitude of deformation
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM clearVec = { 1.0, 0.0, 0.0, 1.0 };
TEMP R0, R1, R2;
# tc0 : unmodified UV
MOV result.texcoord[0].xy, vertex.texcoord[0];
# tc1 : scrolled UV
ADD result.texcoord[1].xy, vertex.texcoord[0], program.local[0];
# tc2 : deformation magnitude scaled by projection distance
MOV R0, clearVec;
DP4 R0.z, state.matrix.modelview.row[2], vertex.position;
DP4 R1.x, state.matrix.projection.row[0], R0;
DP4 R1.y, state.matrix.projection.row[3], R0;
MAX R1.y, R1, 1.0;
RCP R1.y, R1.y;
MUL R1.x, R1.x, R1.y;
MIN R1.x, R1, 0.02;
MUL result.texcoord[2], R1.x, program.local[1];
MOV result.color, vertex.color;
END
# Normal-Mapped Masked ( Texture and Vertex Color ) Refraction Fragment Program
#
# Textures
# 0 _currentRender
# 1 normalmap
# 2 mask texture
#
# Environment Values
# 0 screen non power of two adjust
# 1 fragment.position to 0.0-1.0 screen coordinates factor
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0, localNormal, maskTex;
PARAM subOne = { -1, -1, -1, -1 };
PARAM scaleTwo = { 2, 2, 2, 2 };
# load mask texture, skip pixel if value too low
TEX maskTex.xy, fragment.texcoord[0], texture[2], 2D;
MUL maskTex.xy, maskTex, fragment.color;
SUB maskTex.xy, maskTex, 0.01;
KIL maskTex;
# load normalmap and adjust by mask
TEX localNormal, fragment.texcoord[1], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
MUL localNormal, localNormal, maskTex;
# offset normalized screen coordinates by scaled normal, then apply npot adjustment
MUL R0.xy, fragment.position, program.env[1];
MAD_SAT R0.xy, localNormal, fragment.texcoord[2], R0;
MUL R0.xy, R0, program.env[0];
# look up _currentRender
TEX result.color.xyz, R0, texture[0], 2D;
END

View file

@ -0,0 +1,83 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[4] = { program.local[0..3] };
MOV result.texcoord[4], c[0];
MOV result.texcoord[5], c[1];
MOV result.texcoord[6], c[2];
MOV result.texcoord[7], c[3];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[3] = { { 1, 9995, 10000, -50000 },
{ -1, 0, 1, 2 },
{ 0.25 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
TEMP R3;
MUL R0.zw, fragment.position.xyxy, env[1].xyxy;
TEX R0.x, R0.zwzw, texture[0], 2D;
MAD R0.y, R0.x, c[0], -c[0].z;
RCP R0.y, R0.y;
RCP R1.y, fragment.texcoord[4].w;
MAD R1.x, R0.y, c[0].w, -fragment.texcoord[4].z;
MUL_SAT R1.x, R1, R1.y;
ADD R1.z, fragment.texcoord[4].y, -fragment.texcoord[4].x;
MAD R1.y, R1.x, R1.z, fragment.texcoord[4].x;
MAD R2.xy, R1.y, c[1], R0.zwzw;
TEX R1.x, R2, texture[0], 2D;
MAD R1.zw, R1.y, c[1].xyzy, R0;
TEX R2.x, R1.zwzw, texture[0], 2D;
ADD R1.z, -R0.x, R2.x;
ADD R1.x, R0, -R1;
ADD R1.x, R1, -R1.z;
MAD R1.w, R0.y, c[0], -fragment.texcoord[6].x;
RCP R2.x, fragment.texcoord[6].y;
MUL_SAT R2.w, R1, R2.x;
MAD R2.y, fragment.texcoord[7], fragment.texcoord[7].z, -fragment.texcoord[7];
MAD R2.z, R2.w, R2.y, fragment.texcoord[7].y;
MAD R2.xy, R1.y, c[1].yzzw, R0.zwzw;
MUL R3.x, -R1, R2.z;
MAD R1.zw, R1.y, c[1].xyyx, R0;
TEX R1.x, R2, texture[0], 2D;
TEX R2.x, R1.zwzw, texture[0], 2D;
ADD R1.w, -R0.x, R2.x;
ADD R1.z, R0.x, -R1.x;
MAD R1.x, fragment.texcoord[5].z, fragment.texcoord[5].w, -fragment.texcoord[5].z;
MAD R2.w, R2, R1.x, fragment.texcoord[5].z;
ADD R1.z, R1, -R1.w;
MUL R1.x, R2.z, -R1.z;
MAD_SAT R1.z, R1.x, c[1].w, R2.w;
MAD_SAT R1.x, R3, c[1].w, R2.w;
ADD R3.x, R1, R1.z;
MAD R2.xy, R1.y, c[1].zxzw, R0.zwzw;
MAD R1.zw, R1.y, c[1].xyxz, R0;
TEX R1.x, R2, texture[0], 2D;
TEX R2.x, R1.zwzw, texture[0], 2D;
ADD R1.z, -R0.x, R1.x;
ADD R1.x, R0, -R2;
ADD R2.y, R1.x, -R1.z;
ADD R1.zw, R0, R1.y;
ADD R0.zw, R0, -R1.y;
TEX R2.x, R0.zwzw, texture[0], 2D;
TEX R1.x, R1.zwzw, texture[0], 2D;
ADD R0.z, -R0.x, R1.x;
ADD R0.x, R0, -R2;
ADD R0.z, R0.x, -R0;
MUL R0.x, R2.z, -R2.y;
MUL R0.z, R2, -R0;
MAD_SAT R0.x, R0, c[1].w, R2.w;
MAD_SAT R0.z, R0, c[1].w, R2.w;
ADD R0.x, R3, R0;
ADD R0.x, R0, R0.z;
MUL R0.w, R0.x, c[2].x;
MAD R1.x, fragment.texcoord[6].z, R0.w, -R0.w;
RCP R0.z, fragment.texcoord[7].x;
MAD R0.x, R0.y, c[0].w, -fragment.texcoord[6].w;
MUL_SAT R0.x, R0, R0.z;
MAD R0.x, R0, R1, R0.w;
MUL_SAT R0.x, R0, fragment.texcoord[5];
MAD result.color.xyz, -R0.x, fragment.texcoord[5].y, c[0].x;
MOV result.color.w, c[0].x;
END

View file

@ -0,0 +1,99 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[4] = { program.local[0..3] };
MOV result.texcoord[4], c[0];
MOV result.texcoord[5], c[1];
MOV result.texcoord[6], c[2];
MOV result.texcoord[7], c[3];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[3] = { { 1, 9995, 10000, -50000 },
{ -1, 0, 1, 2 },
{ 0.25 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
TEMP R2;
MUL R0.zw, fragment.position.xyxy, env[1].xyxy;
TEX R0.x, R0.zwzw, texture[0], 2D;
MAD R0.x, R0, c[0].y, -c[0].z;
RCP R1.x, R0.x;
MUL R2.y, R1.x, c[0].w;
MAD R0.x, R1, c[0].w, -fragment.texcoord[4].z;
RCP R0.y, fragment.texcoord[4].w;
MUL_SAT R0.x, R0, R0.y;
ADD R1.y, fragment.texcoord[4], -fragment.texcoord[4].x;
MAD R0.y, R0.x, R1, fragment.texcoord[4].x;
MAD R1.zw, R0.y, c[1].xyzy, R0;
TEX R0.x, R1.zwzw, texture[0], 2D;
MAD R1.y, R0.x, c[0], -c[0].z;
MAD R1.zw, R0.y, c[1].xyxy, R0;
TEX R0.x, R1.zwzw, texture[0], 2D;
RCP R1.y, R1.y;
MAD R1.x, R1.y, c[0].w, -R2.y;
MAD R0.x, R0, c[0].y, -c[0].z;
RCP R0.x, R0.x;
MAD R0.x, -R0, c[0].w, R2.y;
ADD R0.x, R0, -R1;
ADD R1.y, R2, -fragment.texcoord[6].x;
RCP R1.z, fragment.texcoord[6].y;
MUL_SAT R2.w, R1.y, R1.z;
MAD R1.xy, R0.y, c[1].yxzw, R0.zwzw;
TEX R1.x, R1, texture[0], 2D;
MAD R1.w, fragment.texcoord[7].y, fragment.texcoord[7].z, -fragment.texcoord[7].y;
MAD R2.x, R2.w, R1.w, fragment.texcoord[7].y;
MAD R1.x, R1, c[0].y, -c[0].z;
RCP R1.y, R1.x;
MAD R1.zw, R0.y, c[1].xyyz, R0;
MUL R2.z, -R0.x, R2.x;
TEX R0.x, R1.zwzw, texture[0], 2D;
MAD R0.x, R0, c[0].y, -c[0].z;
RCP R0.x, R0.x;
MAD R1.x, -R0, c[0].w, R2.y;
MAD R1.y, R1, c[0].w, -R2;
MAD R0.x, fragment.texcoord[5].z, fragment.texcoord[5].w, -fragment.texcoord[5].z;
MAD R2.w, R2, R0.x, fragment.texcoord[5].z;
ADD R1.x, R1, -R1.y;
MUL R0.x, R2, -R1;
MAD_SAT R1.x, R0, c[1].w, R2.w;
MAD_SAT R0.x, R2.z, c[1].w, R2.w;
ADD R2.z, R0.x, R1.x;
MAD R1.zw, R0.y, c[1].xyzx, R0;
MAD R1.xy, R0.y, c[1].xzzw, R0.zwzw;
TEX R1.x, R1, texture[0], 2D;
TEX R0.x, R1.zwzw, texture[0], 2D;
MAD R1.y, R0.x, c[0], -c[0].z;
MAD R0.x, R1, c[0].y, -c[0].z;
RCP R1.x, R1.y;
RCP R0.x, R0.x;
MAD R1.x, R1, c[0].w, -R2.y;
MAD R0.x, -R0, c[0].w, R2.y;
ADD R1.z, R0.x, -R1.x;
ADD R1.xy, R0.zwzw, R0.y;
ADD R0.zw, R0, -R0.y;
TEX R0.x, R1, texture[0], 2D;
MAD R0.y, R0.x, c[0], -c[0].z;
TEX R1.x, R0.zwzw, texture[0], 2D;
MAD R0.x, R1, c[0].y, -c[0].z;
RCP R0.y, R0.y;
RCP R0.x, R0.x;
MAD R0.x, -R0, c[0].w, R2.y;
MAD R0.y, R0, c[0].w, -R2;
ADD R0.y, R0.x, -R0;
MUL R0.x, R2, -R1.z;
MUL R0.y, R2.x, -R0;
MAD_SAT R0.x, R0, c[1].w, R2.w;
MAD_SAT R0.y, R0, c[1].w, R2.w;
ADD R0.x, R2.z, R0;
ADD R0.x, R0, R0.y;
MUL R0.z, R0.x, c[2].x;
MAD R0.w, fragment.texcoord[6].z, R0.z, -R0.z;
RCP R0.y, fragment.texcoord[7].x;
ADD R0.x, R2.y, -fragment.texcoord[6].w;
MUL_SAT R0.x, R0, R0.y;
MAD R0.x, R0, R0.w, R0.z;
MUL_SAT R0.x, R0, fragment.texcoord[5];
MAD result.color.xyz, -R0.x, fragment.texcoord[5].y, c[0].x;
MOV result.color.w, c[0].x;
END

View file

@ -0,0 +1,234 @@
# Interaction Vertex Program
#
# Vertex Attributes
# 8 texcoord
# 9 vertex normal(?)
# 10 vertex tangent(?)
# 11 vertex bintangent(?)
#
# Environment Values
# 4 local light position
# 5 local view position
# 6-8 light projection UVW
# 9 light falloff U
# 10-11 normal map UV
# 12-13 diffuse map UV
# 14-15 specular map UV
# 16 vertex colour modulate
# 17 vertex colour add
!!ARBvp1.0
OPTION ARB_position_invariant;
TEMP R0, R1;
PARAM clearTC = { 0.0, 0.5, 0.0, 1.0 };
SUB R0.xyz, program.env[4], vertex.position;
# tc0 : light vector in texture space
DP3 result.texcoord[0].x, R0, vertex.attrib[9];
DP3 result.texcoord[0].y, R0, vertex.attrib[10];
DP3 result.texcoord[0].z, R0, vertex.attrib[11];
# tc1 : normal map UV
DP4 result.texcoord[1].x, vertex.attrib[8], program.env[10];
DP4 result.texcoord[1].y, vertex.attrib[8], program.env[11];
# tc2 : light falloff
DP4 result.texcoord[2].x, vertex.position, program.env[9];
MOV result.texcoord[2].yzw, clearTC;
# tc3 : light projection
DP4 result.texcoord[3].x, vertex.position, program.env[6];
DP4 result.texcoord[3].y, vertex.position, program.env[7];
DP4 result.texcoord[3].w, vertex.position, program.env[8];
# tc4 : diffuse map UV
DP4 result.texcoord[4].x, vertex.attrib[8], program.env[12];
DP4 result.texcoord[4].y, vertex.attrib[8], program.env[13];
# tc5 : specular map UV
DP4 result.texcoord[5].x, vertex.attrib[8], program.env[14];
DP4 result.texcoord[5].y, vertex.attrib[8], program.env[15];
SUB R1.xyz, program.env[5], vertex.position;
# tc6 : view vector in texture space
DP3 result.texcoord[6].x, R1, vertex.attrib[9];
DP3 result.texcoord[6].y, R1, vertex.attrib[10];
DP3 result.texcoord[6].z, R1, vertex.attrib[11];
# no support for material stage in the engine yet
# tc7 : gloss map UV
#DP4 result.texcoord[7].x, vertex.attrib[8], program.env[14];
#DP4 result.texcoord[7].y, vertex.attrib[8], program.env[15];
# calculate vertex color ( output = vertexColor * env[16] + env[17] )
#
# env[16] env[17]
# 1.0 0 1
# color 1 0
# 1.0 - color -1 1
MAD result.color, vertex.color, program.env[16], program.env[17];
END
# Interaction Fragment Program
#
# Textures
# 0 normalization cube map ( not used in this version )
# 1 normal map
# 2 light falloff texture
# 3 light projection texture
# 4 diffuse map
# 5 specular map
# 6 specular lookup table
# 7 gloss map (material stage support in the engine is not present, yet)
#
# Environment Values
# 0 diffuse modifier
# 1 specular modifier
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM aVec = { 1.0, 0.0, 0.0, 1.0 };
# parms0 : specular power
PARAM parms0 = { 24.0, 0.0, 0.0, 0.0 };
# gloss values ( default, high gloss, low gloss )
PARAM gVals = { 16, 150, 2, 0 };
# "half-lambert" scale and bias ( set bias to something like 1 if you dont want this )
PARAM halfLamb = { 0.4, 0.6, 0, 0 };
# lighting bias ( more of the model gets lit than normally ), shadow sharpen scale, shadow sharpen bias
PARAM p0 = { 0.1, 8, -1.5, 0 };
TEMP toView, toLight, halfVec, zeDots, lightProj, R0, R1, diffColor, specColor, outColor, localNormal;
# normalize view vector
DP3 toView.w, fragment.texcoord[6], fragment.texcoord[6];
RSQ toView.w, toView.w;
MUL toView.xyz, toView.w, fragment.texcoord[6];
# normalize light vector
DP3 toLight.w, fragment.texcoord[0], fragment.texcoord[0];
RSQ toLight.w, toLight.w;
MUL toLight.xyz, toLight.w, fragment.texcoord[0];
# construct half vector
ADD halfVec.xyz, toView, toLight;
DP3 halfVec.w, halfVec, halfVec;
RSQ halfVec.w, halfVec.w;
MUL halfVec.xyz, halfVec.w, halfVec;
# look up normal ( rxgb swizzle )
TEX localNormal, fragment.texcoord[1], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
DP3 R0.x, localNormal, localNormal;
RSQ R0.x, R0.x;
MUL localNormal.xyz, R0.x, localNormal;
# load light projection and falloff
TXP lightProj.xyz, fragment.texcoord[3], texture[3], 2D;
TXP R0.xyz, fragment.texcoord[2], texture[2], 2D;
MUL lightProj.xyz, lightProj, R0;
# load diffuse map
TEX diffColor.xyz, fragment.texcoord[4], texture[4], 2D;
MUL diffColor.xyz, diffColor, program.env[0];
# calculate dotproducts for diffuse/specular
DP3 zeDots.x, toLight, localNormal;
DP3_SAT zeDots.y, halfVec, localNormal;
# apply specular power
POW R0.x, zeDots.y, parms0.x;
MUL R0.x, R0, program.env[1];
# default Doom3 doubles the specularity
ADD R0.x, R0, R0;
# look up specular map
TEX specColor, fragment.texcoord[5], texture[5], 2D;
# assemble lighting
MAD outColor.xyz, specColor, R0.x, diffColor;
# TOON (unoptimized wip)
#DP3 zeDots.w, toView, localNormal;
#DP3 zeDots.x, toLight, localNormal;
#DP3 zeDots.x, toLight, {0,0,1};
MAD_SAT zeDots.z, zeDots.x, halfLamb.x, halfLamb.y;
# slightly increase diffuse response
ADD_SAT zeDots.x, zeDots, p0.x;
# shadow sharpening
MAD_SAT zeDots.x, zeDots, p0.y, p0.z;
#
# mix in half-lambert ?
MUL zeDots.x, zeDots.x, zeDots.z;
# gloss mapping in specular texture alpha ( must be below ~250 to be used, otherwise default gloss value is used )
# subtract 0.98, if value is above 0, consider it as not being glossmapped ( because texture with no alpha has alpha of 1 by default )
TEMP gloss;
SUB gloss.w, specColor.w, 0.98;
# lerp between 2 - 150 gloss power
LRP gloss.x, specColor.w, gVals.y, gVals.z;
CMP gloss.x, gloss.w, gloss, gVals;
#CMP gloss.x, gloss.w, gVals, gloss;
#
# specular shading
#MAD R0.x, R0, 0.5, 0.2;
#FLR R0.x, R0.x;
#MUL R0.x, R0.x, 2;
#MUL R0.x, R0.x, 0.75;
#
#MAD_SAT R0.x, zeDots.y, gloss.x, gloss.y;
POW_SAT R0.x, zeDots.y, gloss.x;
#MAD_SAT R0.x, zeDots.y, 8.0, -7;
##MAD_SAT R0.y, zeDots.y, 64.0, -63;
#MAD_SAT R0.y, zeDots.y
#ADD R0.x, R0.x, R0.y;
MUL R0.x, R0, 2;
MUL R0.x, R0, program.env[1];
#
#MUL zeDots.x, zeDots.x, zeDots.z;
MUL R0.x, R0, zeDots.x;
LRP zeDots.x, zeDots.x, 1.0, 0.25;
TEX R1.y, aVec, texture[0], CUBE;
SUB R1.y, R1, 0.2;
#DP3 zeDots.w, toView, localNormal;
#MAD_SAT zeDots.w, zeDots.w, 0.4, 0.6;
CMP zeDots.x, R1.y, 1.0, zeDots.x;
MOV outColor, diffColor;
MAD outColor, specColor, R0.x, diffColor;
#MAD_SAT zeDots.w, zeDots, 90, -6;
#MUL outColor, zeDots.w, outColor;
#
MUL outColor.xyz, outColor, zeDots.x;
MUL outColor.xyz, outColor, lightProj;
#MOV outColor.xyz, gloss.x;
# apply vertex color
MUL result.color.xyz, outColor, fragment.color;
END

View file

@ -0,0 +1,174 @@
# Interaction Vertex Program
#
# Vertex Attributes
# 8 texcoord
# 9 vertex normal(?)
# 10 vertex tangent(?)
# 11 vertex bintangent(?)
#
# Environment Values
# 4 local light position
# 5 local view position
# 6-8 light projection UVW
# 9 light falloff U
# 10-11 normal map UV
# 12-13 diffuse map UV
# 14-15 specular map UV
# 16 vertex colour modulate
# 17 vertex colour add
!!ARBvp1.0
OPTION ARB_position_invariant;
TEMP R0, R1;
PARAM clearTC = { 0.0, 0.5, 0.0, 1.0 };
SUB R0.xyz, program.env[4], vertex.position;
# tc0 : light vector in texture space
DP3 result.texcoord[0].x, R0, vertex.attrib[9];
DP3 result.texcoord[0].y, R0, vertex.attrib[10];
DP3 result.texcoord[0].z, R0, vertex.attrib[11];
# tc1 : normal map UV
DP4 result.texcoord[1].x, vertex.attrib[8], program.env[10];
DP4 result.texcoord[1].y, vertex.attrib[8], program.env[11];
# tc2 : light falloff
DP4 result.texcoord[2].x, vertex.position, program.env[9];
MOV result.texcoord[2].yzw, clearTC;
# tc3 : light projection
DP4 result.texcoord[3].x, vertex.position, program.env[6];
DP4 result.texcoord[3].y, vertex.position, program.env[7];
DP4 result.texcoord[3].w, vertex.position, program.env[8];
# tc4 : diffuse map UV
DP4 result.texcoord[4].x, vertex.attrib[8], program.env[12];
DP4 result.texcoord[4].y, vertex.attrib[8], program.env[13];
# tc5 : specular map UV
DP4 result.texcoord[5].x, vertex.attrib[8], program.env[14];
DP4 result.texcoord[5].y, vertex.attrib[8], program.env[15];
SUB R1.xyz, program.env[5], vertex.position;
# tc6 : view vector in texture space
DP3 result.texcoord[6].x, R1, vertex.attrib[9];
DP3 result.texcoord[6].y, R1, vertex.attrib[10];
DP3 result.texcoord[6].z, R1, vertex.attrib[11];
# calculate vertex color ( output = vertexColor * env[16] + env[17] )
#
# env[16] env[17]
# 1.0 0 1
# color 1 0
# 1.0 - color -1 1
MAD result.color, vertex.color, program.env[16], program.env[17];
END
# Interaction Fragment Program
#
# Textures
# 0 normalization cube map ( not used in this version )
# 1 normal map
# 2 light falloff texture
# 3 light projection texture
# 4 diffuse map
# 5 specular map
# 6 specular lookup table
#
# Environment Values
# 0 diffuse modifier
# 1 specular modifier
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
# parms0 : specular power
PARAM parms0 = { 24.0, 0.0, 0.0, 0.0 };
TEMP toView, toLight, halfVec, zeDots, lightProj, R0, R1, diffColor, specColor, outColor, localNormal;
# normalize view vector
DP3 toView.w, fragment.texcoord[6], fragment.texcoord[6];
RSQ toView.w, toView.w;
MUL toView.xyz, toView.w, fragment.texcoord[6];
# normalize light vector
DP3 toLight.w, fragment.texcoord[0], fragment.texcoord[0];
RSQ toLight.w, toLight.w;
MUL toLight.xyz, toLight.w, fragment.texcoord[0];
# construct half vector
ADD halfVec.xyz, toView, toLight;
DP3 halfVec.w, halfVec, halfVec;
RSQ halfVec.w, halfVec.w;
MUL halfVec.xyz, halfVec.w, halfVec;
# look up normal ( rxgb swizzle )
TEX localNormal, fragment.texcoord[1], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
DP3 R0.x, localNormal, localNormal;
RSQ R0.x, R0.x;
MUL localNormal.xyz, R0.x, localNormal;
# load light projection and falloff
TXP lightProj.xyz, fragment.texcoord[3], texture[3], 2D;
TXP R0.xyz, fragment.texcoord[2], texture[2], 2D;
MUL lightProj.xyz, lightProj, R0;
# load diffuse map
TEX diffColor.xyz, fragment.texcoord[4], texture[4], 2D;
MUL diffColor.xyz, diffColor, program.env[0];
# calculate dotproducts for diffuse/specular
DP3 zeDots.x, toLight, localNormal;
DP3_SAT zeDots.y, halfVec, localNormal;
# apply specular power
POW R0.x, zeDots.y, parms0.x;
MUL R0.x, R0, program.env[1];
# default Doom3 doubles the specularity
ADD R0.x, R0, R0;
# look up specular map
TEX specColor.xyz, fragment.texcoord[5], texture[5], 2D;
# assemble lighting
MAD outColor.xyz, specColor, R0.x, diffColor;
# TOON (unoptimized wip)
DP3 zeDots.w, toView, localNormal;
DP3 zeDots.x, toLight, localNormal;
MAD zeDots.z, zeDots.x, 0.6, 0.4;
ADD_SAT zeDots.x, zeDots, 0.1;
MAD_SAT zeDots.x, zeDots, 24, -11.5;
MAD R0.x, R0, 0.5, 0.5;
FLR R0.x, R0.x;
MUL R0.x, R0.x, 2;
MUL R0.x, R0.x, 0;
MUL zeDots.x, zeDots.x, zeDots.z;
LRP zeDots.x, zeDots.x, 1.0, 0.3;
MOV outColor, diffColor;
MAD outColor, specColor, R0.x, diffColor;
MAD_SAT zeDots.w, zeDots, 90, -6;
MUL outColor, zeDots.w, outColor;
#
MUL outColor.xyz, outColor, zeDots.x;
MUL outColor.xyz, outColor, lightProj;
# apply vertex color
MUL result.color.xyz, outColor, fragment.color;
END

View file

@ -0,0 +1,153 @@
# Interaction Vertex Program
#
# Vertex Attributes
# 8 texcoord
# 9 vertex normal(?)
# 10 vertex tangent(?)
# 11 vertex bintangent(?)
#
# Environment Values
# 4 local light position
# 5 local view position
# 6-8 light projection UVW
# 9 light falloff U
# 10-11 normal map UV
# 12-13 diffuse map UV
# 14-15 specular map UV
# 16 vertex colour modulate
# 17 vertex colour add
!!ARBvp1.0
OPTION ARB_position_invariant;
TEMP R0, R1;
PARAM clearTC = { 0.0, 0.5, 0.0, 1.0 };
SUB R0.xyz, program.env[4], vertex.position;
# tc0 : light vector in texture space
DP3 result.texcoord[0].x, R0, vertex.attrib[9];
DP3 result.texcoord[0].y, R0, vertex.attrib[10];
DP3 result.texcoord[0].z, R0, vertex.attrib[11];
# tc1 : normal map UV
DP4 result.texcoord[1].x, vertex.attrib[8], program.env[10];
DP4 result.texcoord[1].y, vertex.attrib[8], program.env[11];
# tc2 : light falloff
DP4 result.texcoord[2].x, vertex.position, program.env[9];
MOV result.texcoord[2].yzw, clearTC;
# tc3 : light projection
DP4 result.texcoord[3].x, vertex.position, program.env[6];
DP4 result.texcoord[3].y, vertex.position, program.env[7];
DP4 result.texcoord[3].w, vertex.position, program.env[8];
# tc4 : diffuse map UV
DP4 result.texcoord[4].x, vertex.attrib[8], program.env[12];
DP4 result.texcoord[4].y, vertex.attrib[8], program.env[13];
# tc5 : specular map UV
DP4 result.texcoord[5].x, vertex.attrib[8], program.env[14];
DP4 result.texcoord[5].y, vertex.attrib[8], program.env[15];
SUB R1.xyz, program.env[5], vertex.position;
# tc6 : view vector in texture space
DP3 result.texcoord[6].x, R1, vertex.attrib[9];
DP3 result.texcoord[6].y, R1, vertex.attrib[10];
DP3 result.texcoord[6].z, R1, vertex.attrib[11];
# calculate vertex color ( output = vertexColor * env[16] + env[17] )
#
# env[16] env[17]
# 1.0 0 1
# color 1 0
# 1.0 - color -1 1
MAD result.color, vertex.color, program.env[16], program.env[17];
END
# Interaction Fragment Program
#
# Textures
# 0 normalization cube map ( not used in this version )
# 1 normal map
# 2 light falloff texture
# 3 light projection texture
# 4 diffuse map
# 5 specular map
# 6 specular lookup table
#
# Environment Values
# 0 diffuse modifier
# 1 specular modifier
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
# parms0 : specular power
PARAM parms0 = { 12.0, 0.0, 0.0, 0.0 };
TEMP toView, toLight, halfVec, zeDots, lightProj, R0, diffColor, specColor, outColor, localNormal;
# normalize view vector
DP3 toView.w, fragment.texcoord[6], fragment.texcoord[6];
RSQ toView.w, toView.w;
MUL toView.xyz, toView.w, fragment.texcoord[6];
# normalize light vector
DP3 toLight.w, fragment.texcoord[0], fragment.texcoord[0];
RSQ toLight.w, toLight.w;
MUL toLight.xyz, toLight.w, fragment.texcoord[0];
# construct half vector
ADD halfVec.xyz, toView, toLight;
DP3 halfVec.w, halfVec, halfVec;
RSQ halfVec.w, halfVec.w;
MUL halfVec.xyz, halfVec.w, halfVec;
# look up normal ( rxgb swizzle )
TEX localNormal, fragment.texcoord[1], texture[1], 2D;
MAD localNormal.xyz, localNormal.wyzw, 2.0, -1.0;
DP3 R0.x, localNormal, localNormal;
RSQ R0.x, R0.x;
MUL localNormal.xyz, R0.x, localNormal;
# load light projection and falloff
TXP lightProj.xyz, fragment.texcoord[3], texture[3], 2D;
TXP R0.xyz, fragment.texcoord[2], texture[2], 2D;
MUL lightProj.xyz, lightProj, R0;
# load diffuse map
TEX diffColor.xyz, fragment.texcoord[4], texture[4], 2D;
MUL diffColor.xyz, diffColor, program.env[0];
# calculate dotproducts for diffuse/specular
DP3 zeDots.x, toLight, localNormal;
DP3_SAT zeDots.y, halfVec, localNormal;
# apply specular power
POW R0.x, zeDots.y, parms0.x;
MUL R0.x, R0, program.env[1];
# default Doom3 doubles the specularity
ADD R0.x, R0, R0;
# look up specular map
TEX specColor.xyz, fragment.texcoord[5], texture[5], 2D;
# assemble lighting
MAD outColor.xyz, specColor, R0.x, diffColor;
MUL outColor.xyz, outColor, zeDots.x;
MUL outColor.xyz, outColor, lightProj;
# apply vertex color
MUL result.color.xyz, outColor, fragment.color;
END

View file

@ -0,0 +1,18 @@
# this really just displays a texture in screen-space
!!ARBvp1.0
OPTION ARB_position_invariant;
MOV result.texcoord[0], vertex.texcoord[0];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0;
MUL R0.xy, fragment.position, program.env[1];
MUL R0.xy, R0, program.env[0];
TEX result.color.xyz, R0, texture[0], 2D;
END

13
base/glprogs/shadow.vp Normal file
View file

@ -0,0 +1,13 @@
!!ARBvp1.0
TEMP R0;
SUB R0, vertex.position, program.env[4];
MAD R0, program.env[4], R0.w, R0;
DP4 result.position.x, state.matrix.mvp.row[0], R0;
DP4 result.position.y, state.matrix.mvp.row[1], R0;
DP4 result.position.z, state.matrix.mvp.row[2], R0;
DP4 result.position.w, state.matrix.mvp.row[3], R0;
END

View file

@ -0,0 +1,24 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[2] = { program.local[0..1] };
PARAM env[] = { program.env[0..5] };
TEMP R0;
ADD R0.xyz, -vertex.position, env[5];
MOV result.color, vertex.color;
MOV result.texcoord[2], c[0];
MOV result.texcoord[3], c[1];
DP3 result.texcoord[0].z, vertex.normal, R0;
DP3 result.texcoord[0].y, R0, vertex.attrib[10];
DP3 result.texcoord[0].x, R0, vertex.attrib[9];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { 1 } };
TEMP R0;
DP3 R0.x, fragment.texcoord[0], fragment.texcoord[0];
RSQ R0.x, R0.x;
MAD R0.x, -R0, fragment.texcoord[0].z, c[0];
POW R0.x, R0.x, fragment.texcoord[2].x;
MAD R0.x, R0, fragment.texcoord[2].y, fragment.texcoord[2].z;
MUL result.color, fragment.texcoord[3], R0.x;
END

View file

@ -0,0 +1,27 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[1] = { program.local[0] };
MOV result.texcoord[0], vertex.texcoord[0];
MOV result.texcoord[4], c[0];
MOV result.color, vertex.color;
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
PARAM c[1] = { { -15000, 2995, 3000 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
TEMP R1;
MUL R0.xy, fragment.position, env[1];
TEX R0.x, R0, texture[0], 2D;
MAD R0.y, fragment.position.z, c[0], -c[0].z;
MAD R0.x, R0, c[0].y, -c[0].z;
RCP R0.y, R0.y;
RCP R0.x, R0.x;
ADD R0.x, R0, -R0.y;
MUL R1.x, R0, fragment.texcoord[4];
TEX R0, fragment.texcoord[0], texture[1], 2D;
MUL_SAT R1.x, R1, c[0];
MUL R0.w, R0, fragment.color.primary;
MUL result.color.w, R0, R1.x;
MUL result.color.xyz, R0, fragment.color.primary;
END

View file

@ -0,0 +1,60 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
# cgc version 3.1.0013, build date Apr 18 2012
# command line args: -profile arbvp1 -posinv
# source file: softParticleRGB_vert.cg
#vendor NVIDIA Corporation
#version 3.1.0.13
#profile arbvp1
#program main
#semantic main.inParms : C0
#var float4 inParms : C0 : c[0] : 0 : 1
#var float4 vertexTC : $vin.TEXCOORD0 : TEXCOORD0 : 1 : 1
#var float4 vertexColor : $vin.COLOR0 : COLOR0 : 2 : 1
#var float4 texCoord : $vout.TEXCOORD0 : TEX0 : 3 : 1
#var float4 genParms : $vout.TEXCOORD4 : TEX4 : 4 : 1
#var float4 outColor : $vout.COLOR : COL0 : 5 : 1
PARAM c[1] = { program.local[0] };
MOV result.texcoord[0], vertex.texcoord[0];
MOV result.texcoord[4], c[0];
MOV result.color, vertex.color;
END
# 3 instructions, 0 R-regs
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
# cgc version 3.1.0013, build date Apr 18 2012
# command line args: -profile arbfp1 -fastmath -fastprecision
# source file: softParticleRGB_frag.cg
#vendor NVIDIA Corporation
#version 3.1.0.13
#profile arbfp1
#program main
#semantic main.screenAdjust : ENV1
#semantic main.depthImage : TEXUNIT0
#semantic main.mainImage : TEXUNIT1
#var float4 screenAdjust : ENV1 : env[1] : 0 : 1
#var sampler2D depthImage : TEXUNIT0 : texunit 0 : 1 : 1
#var sampler2D mainImage : TEXUNIT1 : texunit 1 : 2 : 1
#var float3 fragPos : $vin.WPOS : WPOS : 3 : 1
#var float4 texCoord : $vin.TEXCOORD0 : TEX0 : 4 : 1
#var float4 genParms : $vin.TEXCOORD4 : TEX4 : 5 : 1
#var float4 vColor : $vin.COLOR : COL0 : 6 : 1
#var float4 outColor : $vout.COLOR : COL : 7 : 1
#const c[0] = -15000 2995 3000
PARAM c[1] = { { -15000, 2995, 3000 } };
PARAM env[] = { program.env[0..1] };
TEMP R0;
MUL R0.xy, fragment.position, env[1];
TEX R0.x, R0, texture[0], 2D;
MAD R0.y, fragment.position.z, c[0], -c[0].z;
MAD R0.x, R0, c[0].y, -c[0].z;
RCP R0.y, R0.y;
RCP R0.x, R0.x;
ADD R0.x, R0, -R0.y;
MUL R0.w, R0.x, fragment.texcoord[4].x;
TEX R0.xyz, fragment.texcoord[0], texture[1], 2D;
MUL_SAT R0.w, R0, c[0].x;
MUL R0.xyz, R0, fragment.color.primary;
MUL result.color.xyz, R0, R0.w;
END
# 12 instructions, 1 R-regs

View file

@ -0,0 +1,14 @@
!!ARBvp1.0
OPTION ARB_position_invariant;
PARAM c[6] = { program.local[0..5] };
MOV result.texcoord[0], c[0];
MOV result.texcoord[1], c[1];
END
!!ARBfp1.0
OPTION ARB_precision_hint_fastest;
TEMP R0;
RCP R0.x, fragment.position.w;
MUL R0.x, fragment.position.z, R0;
MAD_SAT R0.x, R0, fragment.texcoord[0], fragment.texcoord[0].y;
MUL result.color, R0.x, fragment.texcoord[1];
END

12
base/materials/colors.mtr Normal file
View file

@ -0,0 +1,12 @@
// --------------------------------------------------------------
// COMMON COLORS
// --------------------------------------------------------------
textures/color/black
{
noFragment
{
blend diffusemap
map textures/colors/black.tga
linear // no mip maps
}
}

307
base/materials/common.mtr Normal file
View file

@ -0,0 +1,307 @@
_default
{
{
map _default
}
}
_tracemodel
{
collision
}
// a caulk brush will behave as a normal solid surface
// for collision detection and utility flood filling, and
// should be used whenever you know the area isn't going to
// be visible, but it needs to be closed off for things to
// work right. Curves and models don't stop the utility
// flood filling, so you need to have solid brushes behind
// them. Setting the faces that won't ever be seen to
// caulk will save some rendering time and data space.
textures/common/caulk
{
qer_editorimage textures/editor/caulk.tga
noshadows
forceOpaque // will still seal levels
}
//==================================================================================
// Clipping materials begins
//==================================================================================
// a monster clip brush is solid to monsters only
textures/common/monster_clip
{
qer_editorimage textures/editor/monsterclip.jpg
nonsolid
monsterclip
noshadows
}
// only solid for players
textures/common/player_clip
{
qer_editorimage textures/editor/playerclip.tga
noimpact
nonsolid
playerclip
noshadows
}
// solid for all entities, including projectiles
textures/common/full_clip
{
qer_editorimage textures/editor/fullclip.tga
monsterclip
playerclip
moveableclip
noshadows
}
// solid only for projectiles
textures/common/weapon_clip
{
qer_editorimage textures/editor/weap_clip.tga
moveableclip
noshadows
}
// solid to players and monsters only
textures/common/clip
{
qer_editorimage textures/editor/clip.tga
noimpact
nonsolid
monsterclip
playerclip
noshadows
}
// ASE/LWO models can have a hull (simplified copy of the original mesh) with this material so that engine
// uses lower poly model for collision detection instead of the actual visible model to improve performance
textures/common/collision
{
qer_editorimage textures/editor/collision.tga
noshadows
collision
}
textures/common/collision_terrain
{
qer_editorimage textures/editor/collision.tga
noshadows
noSelfShadow
noimpact
nosteps
noOverlays
collision
}
//==================================================================================
// Clipping materials end
//==================================================================================
// aassolid brushes create solid space in AAS files
textures/common/aassolid
{
qer_editorimage textures/editor/aas_solid.tga
qer_nocarve
nonsolid
noshadows
aassolid
}
// aasobstacle brushes are used to compile obstacles into AAS
// that can be enabled/disabled
textures/common/aasobstacle
{
qer_editorimage textures/editor/aas_obstacle.tga
qer_nocarve
nonsolid
noshadows
aasobstacle
}
// surfaces with this material will not render in-game
textures/common/nodraw
{
qer_editorimage textures/editor/nodraw.tga
nonsolid
noShadows
noSelfShadow
}
// sound speaker entity needs a material too :)
textures/common/speaker
{
qer_editorimage textures/editor/speaker.tga
qer_nocarve
noshadows
}
textures/common/shadow
{
noSelfShadow
nonsolid
noimpact
nosteps
forceShadows
}
textures/common/ladder
{
qer_editorimage textures/common/ladder.tga
nonsolid
monsterclip
playerclip
noimpact
ladder
noshadows
}
//======================================================================
// GUIs Begin
//======================================================================
// Use this material for the interactive view screen and use
// a "gui" key referencing appropriate gui file, like "guis/yourguifile.gui" on the entity.
// A model-entity can only have 3 GUI screens
textures/common/entityGui {
qer_editorimage textures/editor/entityGui.tga
discrete
playerclip
guiSurf entity
}
textures/common/entityGui2 {
qer_editorimage textures/editor/entityGui2.tga
discrete
playerclip
guiSurf entity2
}
textures/common/entityGui3 {
qer_editorimage textures/editor/entityGui3.tga
discrete
guiSurf entity3
playerclip
}
//======================================================================
// GUIs End
//======================================================================
// vis portal brushes (one face with vizportal material and the rest 5 with nodraw material) are used to prevent engine
// from rendering what's not in the player's view to improve performance
textures/editor/visportal
{
qer_editorimage textures/editor/visportal.tga
areaportal
noshadows
}
//======================================================================
// For De Triggers
//======================================================================
// standard trigger uses this one
textures/common/trig_std
{
qer_editorimage textures/editor/trigger_std.tga
qer_nocarve // don't let an awry CSG operation cut it up
noshadows
trigger
}
textures/common/trig_relay
{
qer_editorimage textures/editor/trigger_relay.tga
qer_nocarve // don't let an awry CSG operation cut it up
noshadows
trigger
}
textures/common/trig_hurt //de pain, DE PAIN!!!
{
qer_editorimage textures/editor/trigger_hurt.tga
qer_nocarve // don't let an awry CSG operation cut it up
noshadows
trigger
}
textures/common/trig_touch
{
qer_editorimage textures/editor/trigger_touch.tga
qer_nocarve // don't let an awry CSG operation cut it up
noshadows
trigger
}
//======================================================================
// Triggers End!
//======================================================================
//======================================================================
// MISC TEXTURES FOR ENTITIES
//======================================================================
textures/editor/location
{
qer_editorimage textures/editor/location.tga
qer_nocarve
noshadows
}
textures/editor/location_separator
{
qer_editorimage textures/editor/location_separator.tga
qer_nocarve
noshadows
}
textures/editor/quest
{
qer_editorimage textures/editor/quest.tga
qer_nocarve
noshadows
}
textures/editor/quest_complete
{
qer_editorimage textures/editor/quest_complete.tga
qer_nocarve
noshadows
}
textures/editor/quest_primary
{
qer_editorimage textures/editor/quest_primary.tga
qer_nocarve
noshadows
}
textures/editor/commstream
{
qer_editorimage textures/editor/commstream.tga
qer_nocarve
noshadows
}
textures/editor/camera_view
{
qer_editorimage textures/editor/camera_view.tga
qer_nocarve
noshadows
}
textures/editor/target_null
{
qer_editorimage textures/editor/target_null.tga
qer_nocarve
noshadows
}
textures/editor/tip
{
qer_editorimage textures/editor/tip.tga
qer_nocarve
noshadows
}

321
base/materials/enemies.mtr Normal file
View file

@ -0,0 +1,321 @@
// ==================================================================
// UNION SECURITY ' S LIGHT PATROLMAN MATERIAL
// ==================================================================
// ---------------------- BASE LIGHT PATROLMAN (short sleeve) --------------------------------
models/enemies/base_head
{
clamp
flesh
forceOverlays
noSelfShadow
// toonGradientImage textures/toon_lut/toon_lut_01.tga this work in non-BFG engine? THF
/*{
blend bumpmap
map models/md5/enemies/union_patrolman/base_head_local.tga
}*/
{
blend diffusemap
map models/md5/enemies/union_patrolman/base_head_d.tga
}
//specularmap models/md5/enemies/union_patrolman/base_head_s.tga
{
blend add
map models/md5/enemies/union_patrolman/base_head_d.tga
rgb 0.01
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.00075, 0.0005, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0012, 0.0005
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 1024.0, 9.0, 256.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 120.0, 2, 3
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
/*{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0022, -0.001, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 2000, -2.5, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 100000, -0.9, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}*/ //This is in BFG engine, old engine doesn't support glsl. Kept in for completness.
}
models/enemies/base_torso_short_sleeve
{
clamp
flesh
forceOverlays
noSelfShadow
/*{
blend bumpmap
map models/md5/enemies/union_patrolman/base_torso_short_sleeve_local.tga
}*/
{
blend diffusemap
map models/md5/enemies/union_patrolman/base_torso_short_sleeve_d.tga
}
//specularmap models/md5/enemies/union_patrolman/base_torso_short_sleeve_s.tga
{
blend add
map models/md5/enemies/union_patrolman/base_torso_short_sleeve_d.tga
rgb 0.01
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.00075, 0.0005, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0012, 0.0005
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 1024.0, 9.0, 256.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 120.0, 2, 3
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
/*{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0022, -0.001, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -2.1, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 100000, -0.9, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}*/ //This is in BFG engine, old engine doesn't support glsl. Kept in for completness.
}
models/enemies/base_legs
{
clamp
flesh
forceOverlays
noSelfShadow
// toonGradientImage textures/toon_lut/toon_lut_01.tga In BFG engine, not sure if it's in old engine.
/*{
blend bumpmap
map models/md5/enemies/union_patrolman/base_legs_local.tga
}*/
{
blend diffusemap
map models/md5/enemies/union_patrolman/base_legs_d.tga
}
//specularmap models/md5/enemies/union_patrolman/base_legs_s.tga
{
blend add
map models/md5/enemies/union_patrolman/base_legs_d.tga
rgb 0.01
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.00075, 0.0005, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0012, 0.0005
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 1024.0, 9.0, 256.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 120.0, 2, 3
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
/*{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0022, -0.001, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -2.1, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 100000, -0.9, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}*/ //This is in BFG engine, old engine doesn't support glsl. Kept in for completness.
}
models/enemies/base_boots_kneepads
{
clamp
flesh
forceOverlays
noSelfShadow
// toonGradientImage textures/toon_lut/toon_lut_01.tga in BFG engine.
/*{
blend bumpmap
map models/md5/enemies/union_patrolman/base_boots_kneepads_local.tga
}*/
{
blend diffusemap
map models/md5/enemies/union_patrolman/base_boots_kneepads_d.tga
}
//specularmap models/md5/enemies/union_patrolman/base_boots_kneepads_s.tga
{
blend add
map models/md5/enemies/union_patrolman/base_boots_kneepads_d.tga
rgb 0.01
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.00075, 0.0005, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0012, 0.0005
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 1024.0, 9.0, 256.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 120.0, 2, 3
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
/*{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0022, -0.001, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -2.1, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 100000, -0.9, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}*/ //In Bfg, etc. As above.
}
models/enemies/base_eyebrows
{
clamp
flesh
twoSided
forceOverlays
noshadows
polygonOffset 0.2
// toonGradientImage textures/toon_lut/toon_lut_01.tga in BFG engine
{
blend diffusemap
map models/md5/enemies/union_patrolman/base_eyebrows_d.tga
alphaTest 0.5
}
}
models/enemies/base_eyeR
{
translucent
noshadows
//deform eyeBall
sort decal
flesh
polygonOffset 2
{
blend filter
//blend diffusemap
map models/md5/enemies/union_patrolman/base_eye_d.tga
//centerScale 0.4, 0.4
}
}
models/enemies/base_eyeL
{
translucent
noshadows
//deform eyeBall
sort decal
flesh
polygonOffset 2
{
blend filter
//blend diffusemap
map models/md5/enemies/union_patrolman/base_eye_d.tga
//centerScale 0.4, 0.4
}
}
// ----------------------- Doom 3 style eyes BEGINS --------------------------------
models/enemies/base_eyeR_d3
{
translucent
noshadows
deform eyeBall
sort decal
flesh
//polygonOffset 2
clamp
{
blend filter
map models/md5/enemies/union_patrolman/base_eye_d.tga
centerScale 0.85, 0.85
}
}
models/enemies/base_eyeL_d3
{
translucent
noshadows
deform eyeBall
sort decal
flesh
//polygonOffset 2
clamp
{
blend filter
map models/md5/enemies/union_patrolman/base_eye_d.tga
centerScale 0.85, 0.85
}
}
// ----------------------- Doom 3 style eyes ENDS --------------------------------

View file

@ -0,0 +1,24 @@
//
// fading mesh / particles with this material as player approaches it
//
textures/distanceFade {
noshadows
noimpact
translucent
{
vertexProgram zFadeSimple.vfp
vertexParm 0 0.00390625, -0.5, 0, 0 // zScale, zBias ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
vertexParm 1 1, 1, 1, 1 // RGBA multiplier
fragmentProgram zFadeSimple.vfp
maskColor
}
{
blend gl_dst_alpha, gl_one_minus_dst_alpha
map _black
maskAlpha
}
}

View file

@ -0,0 +1,131 @@
textures/foggedBlend
{
noSelfShadow
noshadows
translucent
nonsolid
noimpact
sort 110
{
blend blend
vertexProgram foggedBlend.vfp
vertexParm 0 .39, .39, .39, 1 // fog color
vertexParm 1 0.001, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
fragmentProgram foggedBlend.vfp
fragmentMap 0 textures/particles/smokepuffb.tga // source texture ( preferably with alpha-channel )
}
}
textures/foggedAdd
{
noSelfShadow
noshadows
translucent
nonsolid
noimpact
sort 110
{
blend add
vertexProgram foggedAdd.vfp
vertexParm 0 .39, .39, .39, 1 // fog color
vertexParm 1 0.001, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
fragmentProgram foggedAdd.vfp
fragmentMap 0 textures/particles/smokepuffb.tga // source texture
}
}
textures/foggedMul
{
noSelfShadow
noshadows
translucent
nonsolid
noimpact
sort 110
{
blend filter
vertexProgram foggedMul.vfp
vertexParm 0 .39, .39, .39, 1 // fog color
vertexParm 1 0.001, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
fragmentProgram foggedMul.vfp
fragmentMap 0 invertColor( textures/particles/barrelpoof.tga ) // source texture
}
}
textures/foggedBlendSoft
{
noSelfShadow
noshadows
translucent
nonsolid
noimpact
sort 110
{
blend blend
vertexProgram foggedBlendSoft.vfp
vertexParm 0 .39, .39, .39, 1 // fog color
vertexParm 1 0.001, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
vertexParm 2 0.1, 0, 0, 0 // "softness" factor
fragmentProgram foggedBlendSoft.vfp
fragmentMap 0 textures/particles/smokepuffb.tga // source texture ( preferably with alpha-channel )
fragmentMap 1 _currentDepth // depth image
}
}
textures/foggedAddSoft
{
noSelfShadow
noshadows
translucent
nonsolid
noimpact
sort 110
{
blend add
vertexProgram foggedAddSoft.vfp
vertexParm 0 .39, .39, .39, 1 // fog color
vertexParm 1 0.001, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
vertexParm 2 0.1, 0, 0, 0 // "softness" factor
fragmentProgram foggedAddSoft.vfp
fragmentMap 0 textures/particles/smokepuffb.tga // source texture
fragmentMap 1 _currentDepth // depth image
}
}
textures/foggedMulSoft
{
noSelfShadow
noshadows
translucent
nonsolid
noimpact
sort 110
{
blend filter
vertexProgram foggedMulSoft.vfp
vertexParm 0 .39, .39, .39, 1 // fog color
vertexParm 1 0.001, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
vertexParm 2 0.1, 0, 0, 0 // "softness" factor
fragmentProgram foggedMulSoft.vfp
fragmentMap 0 invertColor( textures/particles/barrelpoof.tga ) // source texture
fragmentMap 1 _currentDepth // depth image
}
}

View file

@ -0,0 +1,16 @@
textures/fresnelTest {
noshadows
noimpact
translucent
{
blend add
vertexProgram simpleFresnel.vfp
vertexParm 0 4, 0.9, 0.1, 0 // fresnel power, scale, bias
vertexParm 1 1, 0, 1, 1 // RGBA
fragmentProgram simpleFresnel.vfp
}
}

25
base/materials/fogs.mtr Normal file
View file

@ -0,0 +1,25 @@
fogs/defaultFog
{
fogLight
noShadows
lightFalloffImage lights/fog_simple_falloff.tga
{
map lights/fog_simple_falloff.tga
//map _fog // internal fog image
colored // use entity's color assigned in the editor or via shaderparms
zeroClamp
}
}
fogs/defaultFancyFog
{
fogLight
noShadows
lightFalloffImage lights/fog_fancy_falloff.tga
{
map lights/fog_fancy.tga
//map _fog // internal fog image
colored // use entity's color assigned in the editor or via shaderparms
zeroClamp
}
}

399
base/materials/gadgets.mtr Normal file
View file

@ -0,0 +1,399 @@
table distortCompassAlpha { { 1, 1, 1, 1, 0.95, } }
table simpleNoise { {
0.456193348, 0.48338368, 0.413897276, 0.274924468, 0.27190332, 0.04531722, 0.395770388,
0.039274924, 0.607250748, 0.28700906, 0.290030208, 0.160120844, 0.586102712, 0.703927484,
0.021148036, 0.6797583, 0.42296072, 0.108761328, 0.311178244, 0.09063444, 0.208459212,
0.429003016, 0.024169184, 0.299093652, 0.111782476, 0.72507552, 0.063444108, 0.03021148,
0.069486404, 0.57401812, 0.018126888, 0.447129904, 0.746223556, 0.36253776, 0.706948632,
0.2265861, 0.003021148, 0.078549848, 0.595166156, 0.187311176, 0.283987912, 0.761329296,
0.661631412, 0.613293044, 0.353474316, 0.10574018, 0.033232628, 0.096676736, 0.172205436,
0.534743196, 0.099697884, 0.265861024, 0.716012076, 0.450151052, 0.169184288, 0.262839876,
0.525679752, 0.06042296, 0.3776435, 0.410876128, 0.516616308, 0.507552864, 0.205438064,
0.5287009, 0.223564952, 0.49848942, 0.214501508, 0.404833832, 0.419939572, 0.145015104,
0.081570996, 0.501510568, 0.232628396, 0.441087608, 0.477341384, 0.697885188, 0.250755284,
0.335347428, 0.691842892, 0.368580056, 0.18126888, 0.637462228, 0.401812684, 0.69486404,
0.66465256, 0.31722054, 0.277945616, 0.123867068, 0.16616314, 0.138972808, 0.74018126,
0.12084592, 0.737160112, 0.308157096, 0.432024164, 0.163141992, 0.19637462, 0.0755287,
0.190332324, 0.486404828, 0.003021148, 0.652567968, 0.24169184, 0.220543804, 0.631419932,
0.229607248, 0.398791536, 0.564954676, 0.628398784, 0.268882172, 0.054380664, 0.510574012,
0.6042296, 0.592145008, 0.40785498, 0.39274924, 0.350453168, 0.567975824, 0.480362532,
0.259818728, 0.495468272, 0.3021148, 0.329305132, 0.598187304, 0.522658604, 0.561933528,
0.009063444, 0.193353472, 0.157099696, 0.655589116, 0.682779448, 0.755287, 0.374622352,
0.371601204, 0.01510574, 0.610271896, 0.114803624, 0.444108756, 0.356495464, 0.380664648,
0.77039274, 0.247734136, 0.25679758, 0.640483376, 0.625377636, 0.622356488, 0.178247732,
0.685800596, 0.141993956, 0.048338368, 0.175226584, 0.051359516, 0.549848936, 0.570996972,
0.084592144, 0.126888216, 0.673716004, 0.552870084, 0.51359516, 0.643504524, 0.359516612,
0.749244704, 0.459214496, 0.006042296, 0.132930512, 0.465256792, 0.492447124, 0.21148036,
0.667673708, 0.462235644, 0.305135948, 0.46827794, 0.504531716, 0.129909364, 0.519637456,
0.027190332, 0.389728092, 0.066465256, 0.117824772, 0.764350444, 0.057401812, 0.296072504,
0.326283984, 0.33232628, 0.238670692, 0.341389724, 0.676737152, 0.700906336, 0.537764344,
0.55891238, 0.338368576, 0.314199392, 0.658610264, 0.743202408, 0.293051356, 0.688821744,
0.758308148, 0.102719032, 0.731117816, 0.583081564, 0.719033224, 0.63444108, 0.435045312,
0.036253776, 0.577039268, 0.540785492, 0.489425976, 0.728096668, 0.244712988, 0.154078548,
0.43806646, 0.70996978, 0.752265852, 0.042296072, 0.722054372, 0.323262836, 0.148036252,
0.580060416, 0.646525672, 0.093655588, 0.546827788, 0.601208452, 0.320241688, 0.474320236,
0.555891232, 0.253776432, 0.616314192, 0.531722048, 0.34743202, 0.365558908, 0.1510574,
0.13595166, 0.383685796, 0.012084592, 0.4531722, 0.767371592, 0.416918424, 0.712990928,
0.61933534, 0.280966764, 0.670694856, 0.344410872, 0.202416916, 0.087613292, 0.072507552,
0.217522656, 0.734138964, 0.425981868, 0.386706944, 0.58912386, 0.235649544, 0.199395768,
0.64954682, 0.184290028, 0.471299088, 0.54380664 } }
//-------------------------------------------------------------------------
//
// VIEW GADGETS
//
//-------------------------------------------------------------------------
// ============ Compass ============
models/gadgets/compass
{
//noShadows
noSelfShadow
unsmoothedTangents
{
blend diffusemap
map models/md5/gadgets/view_compass/compass.tga
}
{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0025, -0.01, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -0.0001, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 10000, -0.005, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}
}
models/gadgets/compass_lens
{
noShadows
unsmoothedTangents
{
blend diffusemap
map models/md5/gadgets/view_compass/compass_lens_d.tga
}
{
blend specularmap
map models/md5/gadgets/view_compass/compass_lens_s.tga
}
{
blend add
map models/md5/gadgets/view_compass/compass_lens_anim.tga
scroll 1, time * -70
}
{
blend add
map models/md5/gadgets/view_compass/compass_lens_anim.tga
translate 1, 7
scroll 1, time * 7
}
{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0025, -0.01, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -0.0001, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 100000, -0.005, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}
}
models/gadgets/compass_screen_arrow
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
noBlur
//uncompressed
linear
blend blend
map models/md5/gadgets/view_compass/compass_screen_arrow.tga
}
{
noBlur
//uncompressed
linear
blend add
map models/md5/gadgets/view_compass/compass_screen_arrow.tga
rgb 0.025
}
}
models/gadgets/compass_screen_nswe
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
noBlur
//uncompressed
linear
blend blend
map models/md5/gadgets/view_compass/compass_screen_nswe.tga
}
{
noBlur
//uncompressed
linear
blend add
map models/md5/gadgets/view_compass/compass_screen_nswe.tga
rgb 0.01
}
}
models/gadgets/compass_disk_debug1
{
noShadows
noimpact
translucent
noOverlays
clamp
//sort nearest
{
noBlur
//blend add
blend blend
map models/md5/gadgets/view_compass/compass_pquest1_debug.tga
}
{
noBlur
blend add
map models/md5/gadgets/view_compass/compass_pquest1_debug.tga
rgb 0.01
}
}
models/gadgets/axis_debug
{
noShadows
noimpact
//translucent
noOverlays
clamp
//sort nearest
{
noBlur
blend diffusemap
map models/md5/gadgets/view_compass/axis_debug.tga
}
{
noBlur
blend add
map models/md5/gadgets/view_compass/axis_debug.tga
rgb 0.05
}
}
//--------------- Primary Quests dots ----------------------------------
models/gadgets/compass_dot_pquest1
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
if ( parm9 == 121 )
uncompressed
//linear
noBlur
blend blend
map models/md5/gadgets/view_compass/compass_dot_pquest1.tga
}
{
if ( parm9 == 121 )
uncompressed
//linear
noBlur
blend add
map models/md5/gadgets/view_compass/compass_dot_pquest1.tga
rgb 0.25
}
}
models/gadgets/compass_dot_pquest2
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
if ( parm10 == 121 )
uncompressed
//linear
noBlur
blend blend
map models/md5/gadgets/view_compass/compass_dot_pquest2.tga
}
{
if ( parm10 == 121 )
uncompressed
//linear
noBlur
blend add
map models/md5/gadgets/view_compass/compass_dot_pquest2.tga
rgb 0.25
}
}
models/gadgets/compass_dot_pquest3
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
if ( parm11 == 121 )
uncompressed
//linear
noBlur
blend blend
map models/md5/gadgets/view_compass/compass_dot_pquest3.tga
}
{
if ( parm11 == 121 )
uncompressed
//linear
noBlur
blend add
map models/md5/gadgets/view_compass/compass_dot_pquest3.tga
rgb 0.25
}
}
//---------------------------------------------------------------------------
models/gadgets/compass_screen_pquest1
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
noBlur
blend blend
map models/md5/gadgets/view_compass/compass_screen_pquest1.tga
}
{
noBlur
blend add
map models/md5/gadgets/view_compass/compass_screen_pquest1.tga
rgb 0.85
}
}
models/gadgets/compass_screen_pquest2
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
noBlur
blend blend
map models/md5/gadgets/view_compass/compass_screen_pquest2.tga
}
{
noBlur
blend add
map models/md5/gadgets/view_compass/compass_screen_pquest2.tga
rgb 0.85
}
}
models/gadgets/compass_screen_pquest3
{
noShadows
noimpact
translucent
noOverlays
clamp
sort nearest
{
noBlur
blend blend
map models/md5/gadgets/view_compass/compass_screen_pquest3.tga
}
{
noBlur
blend add
map models/md5/gadgets/view_compass/compass_screen_pquest3.tga
rgb 0.85
}
}
//----------------------------- Compass Pick-up model disks materials--------------------------------------
models/gadgets/compass_screen_arrow_pickup
{
noShadows
noimpact
translucent
noOverlays
clamp
//deform turbulent simpleNoise 0.07 (time * 0.2) 0.5
deform turbulent simpleNoise 0.1 * simpleNoise[ time * 0.07 ] simpleNoise[ time * 0.2 ] simpleNoise [ time * 0.5 ]
{
blend blend
map models/md5/gadgets/view_compass/compass_screen_arrow.tga
alpha 2 * simpleNoise[ time * 0.05 ]
}
{
blend add
map models/md5/gadgets/view_compass/compass_screen_arrow.tga
rgb 0.015
alpha 2 * simpleNoise[ time * 0.07 ]
}
}
models/gadgets/compass_screen_nswe_pickup
{
noShadows
noimpact
translucent
noOverlays
clamp
{
blend blend
map models/md5/gadgets/view_compass/compass_screen_nswe.tga
alpha simpleNoise[ time * 0.01 ]
rotate 2 * sinTable[ time * 0.04 ]
}
{
blend add
map models/md5/gadgets/view_compass/compass_screen_nswe.tga
rgb 0.01
alpha simpleNoise[ time * 0.01 ]
rotate 2 * sinTable[ time * 0.04 ]
}
}
//------------------------------------------------------------------------------------

28
base/materials/gfx.mtr Normal file
View file

@ -0,0 +1,28 @@
textures/bigchars
{
{
blend blend
maskDepth
colored
nopicmip
linear
map textures/conchars.tga
}
}
console
{
{
map textures/colors/black.tga
linear // no mip maps
}
}
splashScreen
{
{
forceHighQuality
blend blend
map guis/assets/splash/init.tga
}
}

69
base/materials/glass.mtr Normal file
View file

@ -0,0 +1,69 @@
textures/glass/device_glass
{
noSelfShadow
noshadows
twosided
translucent
glass
forceoverlays
sort decal
qer_editorimage textures/glass/device_glass_d
{
blend blend
map textures/glass/device_glass.tga
alpha 0.5
}
{
blend blend
map textures/glass/device_glass_d
alpha 0.65
}
}
textures/glass/reflective_glass
{
noSelfShadow
noshadows
twosided
translucent
glass
forceoverlays
sort decal
qer_editorimage textures/glass/device_glass_d
{
blend bumpmap // this stage is needed to workaround issue of not having cubeMap reflections without diffusemap stage
map _flat
}
{
vertexProgram heatHaze.vfp
vertexParm 0 0 , 0 // texture scrolling
vertexParm 1 .5 // magnitude of the distortion
fragmentProgram heatHaze.vfp
fragmentMap 0 _currentRender
fragmentMap 1 normalMap textures/sfx/heathaze_local.tga // the normal map for distortion
}
{
maskcolor
map makealpha( textures/glass/device_glass.tga )
alpha 0.3 // tweak alpha to tune reflection strength
}
{
blend gl_dst_alpha, gl_one
maskalpha
cubeMap env/test // envshot cmd has to be issues when in 640x480 resolution (r_mode 3) and g_fov 90 to avoid artifacts
red Parm0
green Parm1
blue Parm2
texgen reflect
}
{
blend blend
map textures/glass/device_glass_d
alpha 0.5
}
}

119
base/materials/items.mtr Normal file
View file

@ -0,0 +1,119 @@
//-------------------------------------------------------------------------
//
// PDA gadget pick-ups
//
//-------------------------------------------------------------------------
// ======================== PDA Audio log pick-up radio ========================
table lcdFlicker { { 0.5, 0.5, 0.5, 0.5, 0.44, 0.47, 0.45, 0.45, 0.5, 0.5, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 } }
table lcdFlicker2 { { 0.6, 0.6, 0.6, 0.6, 0.54, 0.57, 0.55, 0.55, 0.6, 0.6, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 } }
table lcdFlicker3 { { 0.3, 0.3, 0.3, 0.3, 0.24, 0.27, 0.25, 0.25, 0.3, 0.3, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 } }
models/items/pda_pickups/pda_audio1
{
qer_editorimage models/items/pda_pickups/pda_audio1_d.tga
diffusemap models/items/pda_pickups/pda_audio1_d.tga
//specularmap models/items/pda_pickups/pda_audio1_s.tga
bumpmap models/items/pda_pickups/pda_audio1_local.tga
{
blend add
map models/items/pda_pickups/pda_audio1_d.tga
rgb 0.02
}
{
blend filter
vertexProgram inkEffect.vfp
vertexParm 0 0.75, 0.0025, -0.01, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -0.35, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 10000, -0.005, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
/*{
blend filter
vertexProgram inkEffect_skinned.glsl
vertexParm 0 0.75, 0.0025, -0.01, 0 // inkAmount, nearFarScale, nearFarBias
vertexParm 1 1.5, 5000, -0.35, 0 // inkSize, inkScale, inkBias (near)
vertexParm 2 1.2, 10000, -0.005, 0 // inkSize, inkScale, inkBias (far)
fragmentProgram inkEffect_skinned.glsl
fragmentMap 0 _currentDepth
maskDepth
}*/
}
models/items/pda_pickups/pda_audio1_top_screen
{
qer_editorimage models/items/pda_pickups/pda_audio1_top_screen_d.tga
translucent
{
blend blend
map models/items/pda_pickups/pda_audio1_top_screen_d.tga
alpha lcdFlicker[ time * 0.5 ]
}
{
blend add
map models/items/pda_pickups/pda_audio1_top_screen_d.tga
rgb 0.01
}
}
models/items/pda_pickups/pda_audio1_middle_screen
{
qer_editorimage models/items/pda_pickups/pda_audio1_middle_screen_d.tga
translucent
{
blend blend
map models/items/pda_pickups/pda_audio1_middle_screen_d.tga
alpha lcdFlicker2[ time * 0.7 ]
}
{
blend add
map models/items/pda_pickups/pda_audio1_middle_screen_d.tga
rgb 0.05
}
}
models/items/pda_pickups/pda_audio1_bottom_screen
{
qer_editorimage models/items/pda_pickups/pda_audio1_bottom_screen_d.tga
translucent
{
blend blend
map models/items/pda_pickups/pda_audio1_bottom_screen_d.tga
alpha lcdFlicker3[ time ]
}
{
blend add
map models/items/pda_pickups/pda_audio1_bottom_screen_d.tga
rgb 0.03
}
}
// --------------- Placeholders for health ---------------------------------
textures/items/health/health01
{
qer_editorimage models/items/health/health01.tga
diffusemap models/items/health/health01.tga
}
textures/items/health/armor01
{
qer_editorimage models/items/armor/armor01.tga
diffusemap models/items/armor/armor01.tga
}
textures/items/invigorator/invigorator
{
qer_editorimage models/items/invigorator/invigorator.tga
diffusemap models/items/invigorator/invigorator.tga
}

182
base/materials/lights.mtr Normal file
View file

@ -0,0 +1,182 @@
// ######## tables
// sinTable and cosTable must be defined for the rotate function to work
table sinTable { {
0.000000, 0.024541, 0.049068, 0.073565, 0.098017, 0.122411, 0.146730, 0.170962,
0.195090, 0.219101, 0.242980, 0.266713, 0.290285, 0.313682, 0.336890, 0.359895,
0.382683, 0.405241, 0.427555, 0.449611, 0.471397, 0.492898, 0.514103, 0.534998,
0.555570, 0.575808, 0.595699, 0.615232, 0.634393, 0.653173, 0.671559, 0.689541,
0.707107, 0.724247, 0.740951, 0.757209, 0.773010, 0.788346, 0.803208, 0.817585,
0.831470, 0.844854, 0.857729, 0.870087, 0.881921, 0.893224, 0.903989, 0.914210,
0.923880, 0.932993, 0.941544, 0.949528, 0.956940, 0.963776, 0.970031, 0.975702,
0.980785, 0.985278, 0.989177, 0.992480, 0.995185, 0.997290, 0.998795, 0.999699,
1.000000, 0.999699, 0.998795, 0.997290, 0.995185, 0.992480, 0.989177, 0.985278,
0.980785, 0.975702, 0.970031, 0.963776, 0.956940, 0.949528, 0.941544, 0.932993,
0.923880, 0.914210, 0.903989, 0.893224, 0.881921, 0.870087, 0.857729, 0.844854,
0.831470, 0.817585, 0.803208, 0.788346, 0.773010, 0.757209, 0.740951, 0.724247,
0.707107, 0.689541, 0.671559, 0.653173, 0.634393, 0.615232, 0.595699, 0.575808,
0.555570, 0.534998, 0.514103, 0.492898, 0.471397, 0.449611, 0.427555, 0.405241,
0.382683, 0.359895, 0.336890, 0.313682, 0.290285, 0.266713, 0.242980, 0.219101,
0.195090, 0.170962, 0.146730, 0.122411, 0.098017, 0.073565, 0.049068, 0.024541,
0.000000, -0.024541, -0.049068, -0.073565, -0.098017, -0.122411, -0.146730, -0.170962,
-0.195090, -0.219101, -0.242980, -0.266713, -0.290285, -0.313682, -0.336890, -0.359895,
-0.382683, -0.405241, -0.427555, -0.449611, -0.471397, -0.492898, -0.514103, -0.534998,
-0.555570, -0.575808, -0.595699, -0.615232, -0.634393, -0.653173, -0.671559, -0.689541,
-0.707107, -0.724247, -0.740951, -0.757209, -0.773010, -0.788346, -0.803208, -0.817585,
-0.831470, -0.844854, -0.857729, -0.870087, -0.881921, -0.893224, -0.903989, -0.914210,
-0.923880, -0.932993, -0.941544, -0.949528, -0.956940, -0.963776, -0.970031, -0.975702,
-0.980785, -0.985278, -0.989177, -0.992480, -0.995185, -0.997290, -0.998795, -0.999699,
-1.000000, -0.999699, -0.998795, -0.997290, -0.995185, -0.992480, -0.989177, -0.985278,
-0.980785, -0.975702, -0.970031, -0.963776, -0.956940, -0.949528, -0.941544, -0.932993,
-0.923880, -0.914210, -0.903989, -0.893224, -0.881921, -0.870087, -0.857729, -0.844854,
-0.831470, -0.817585, -0.803208, -0.788346, -0.773010, -0.757209, -0.740951, -0.724247,
-0.707107, -0.689541, -0.671559, -0.653173, -0.634393, -0.615232, -0.595699, -0.575808,
-0.555570, -0.534998, -0.514103, -0.492898, -0.471397, -0.449611, -0.427555, -0.405241,
-0.382683, -0.359895, -0.336890, -0.313682, -0.290285, -0.266713, -0.242980, -0.219101,
-0.195090, -0.170962, -0.146730, -0.122411, -0.098017, -0.073565, -0.049068, -0.024541 } }
table cosTable { {
1.000000, 0.999699, 0.998795, 0.997290, 0.995185, 0.992480, 0.989177, 0.985278,
0.980785, 0.975702, 0.970031, 0.963776, 0.956940, 0.949528, 0.941544, 0.932993,
0.923880, 0.914210, 0.903989, 0.893224, 0.881921, 0.870087, 0.857729, 0.844854,
0.831470, 0.817585, 0.803208, 0.788346, 0.773010, 0.757209, 0.740951, 0.724247,
0.707107, 0.689541, 0.671559, 0.653173, 0.634393, 0.615232, 0.595699, 0.575808,
0.555570, 0.534998, 0.514103, 0.492898, 0.471397, 0.449611, 0.427555, 0.405241,
0.382683, 0.359895, 0.336890, 0.313682, 0.290285, 0.266713, 0.242980, 0.219101,
0.195090, 0.170962, 0.146730, 0.122411, 0.098017, 0.073565, 0.049068, 0.024541,
0.000000, -0.024541, -0.049068, -0.073565, -0.098017, -0.122411, -0.146730, -0.170962,
-0.195090, -0.219101, -0.242980, -0.266713, -0.290285, -0.313682, -0.336890, -0.359895,
-0.382683, -0.405241, -0.427555, -0.449611, -0.471397, -0.492898, -0.514103, -0.534998,
-0.555570, -0.575808, -0.595699, -0.615232, -0.634393, -0.653173, -0.671559, -0.689541,
-0.707107, -0.724247, -0.740951, -0.757209, -0.773010, -0.788346, -0.803208, -0.817585,
-0.831470, -0.844854, -0.857729, -0.870087, -0.881921, -0.893224, -0.903989, -0.914210,
-0.923880, -0.932993, -0.941544, -0.949528, -0.956940, -0.963776, -0.970031, -0.975702,
-0.980785, -0.985278, -0.989177, -0.992480, -0.995185, -0.997290, -0.998795, -0.999699,
-1.000000, -0.999699, -0.998795, -0.997290, -0.995185, -0.992480, -0.989177, -0.985278,
-0.980785, -0.975702, -0.970031, -0.963776, -0.956940, -0.949528, -0.941544, -0.932993,
-0.923880, -0.914210, -0.903989, -0.893224, -0.881921, -0.870087, -0.857729, -0.844854,
-0.831470, -0.817585, -0.803208, -0.788346, -0.773010, -0.757209, -0.740951, -0.724247,
-0.707107, -0.689541, -0.671559, -0.653173, -0.634393, -0.615232, -0.595699, -0.575808,
-0.555570, -0.534998, -0.514103, -0.492898, -0.471397, -0.449611, -0.427555, -0.405241,
-0.382683, -0.359895, -0.336890, -0.313682, -0.290285, -0.266713, -0.242980, -0.219101,
-0.195090, -0.170962, -0.146730, -0.122411, -0.098017, -0.073565, -0.049068, -0.024541,
0.000000, 0.024541, 0.049068, 0.073565, 0.098017, 0.122411, 0.146730, 0.170962,
0.195090, 0.219101, 0.242980, 0.266713, 0.290285, 0.313682, 0.336890, 0.359895,
0.382683, 0.405241, 0.427555, 0.449611, 0.471397, 0.492898, 0.514103, 0.534998,
0.555570, 0.575808, 0.595699, 0.615232, 0.634393, 0.653173, 0.671559, 0.689541,
0.707107, 0.724247, 0.740951, 0.757209, 0.773010, 0.788346, 0.803208, 0.817585,
0.831470, 0.844854, 0.857729, 0.870087, 0.881921, 0.893224, 0.903989, 0.914210,
0.923880, 0.932993, 0.941544, 0.949528, 0.956940, 0.963776, 0.970031, 0.975702,
0.980785, 0.985278, 0.989177, 0.992480, 0.995185, 0.997290, 0.998795, 0.999699 } }
table convexFade { {
0.0000000, 0.0249307, 0.0498458, 0.0747300, 0.0995678, 0.1243436, 0.1490421, 0.1736480,
0.1981460, 0.2225208, 0.2467572, 0.2708403, 0.2947549, 0.3184864, 0.3420199, 0.3653407,
0.3884345, 0.4112868, 0.4338834, 0.4562103, 0.4782536, 0.4999996, 0.5214348, 0.5425459,
0.5633196, 0.5837433, 0.6038040, 0.6234894, 0.6427872, 0.6616854, 0.6801723, 0.6982363,
0.7158664, 0.7330514, 0.7497807, 0.7660440, 0.7818310, 0.7971320, 0.8119375, 0.8262383,
0.8400255, 0.8532904, 0.8660250, 0.8782212, 0.8898714, 0.9009684, 0.9115055, 0.9214758,
0.9308734, 0.9396923, 0.9479270, 0.9555725, 0.9626240, 0.9690770, 0.9749277, 0.9801723,
0.9848076, 0.9888306, 0.9922391, 0.9950306, 0.9972037, 0.9987569, 0.9996892, 1.0000000 } }
table concaveFade { {
0.0000000, 0.0003108, 0.0012431, 0.0027962, 0.0049692, 0.0077608, 0.0111692, 0.0151922,
0.0198275, 0.0250720, 0.0309227, 0.0373757, 0.0444271, 0.0520726, 0.0603073, 0.0691261,
0.0785237, 0.0884940, 0.0990310, 0.1101280, 0.1217782, 0.1339744, 0.1467089, 0.1599738,
0.1737609, 0.1880617, 0.2028672, 0.2181682, 0.2339552, 0.2502184, 0.2669477, 0.2841327,
0.3017627, 0.3198268, 0.3383136, 0.3572118, 0.3765096, 0.3961950, 0.4162557, 0.4366793,
0.4574530, 0.4785641, 0.4999992, 0.5217452, 0.5437885, 0.5661154, 0.5887120, 0.6115643,
0.6346580, 0.6579789, 0.6815124, 0.7052438, 0.7291585, 0.7532415, 0.7774780, 0.8018527,
0.8263507, 0.8509566, 0.8756551, 0.9004309, 0.9252687, 0.9501528, 0.9750680, 1.0000000 } }
table plasmatable { { .9, 1, 1.6, .8, 2, 1, 1.5, 1.7, .8, 1, 1.2, .9, .9, .8, 1.3, .8, .9, .8, 1.6, .7, 1.7, .9, 1.1, .9, .8, .9, 1 } }
table flicker1 { { 0, .3, .1, .5, .3, .8, .9, .5, .2, .1, .7, .4, 1, .2, .5, 0, .2, .7, .5 } }
table jet_flicker1 { { 1, .9, .95, .87, 1, .92, .85, .9, .97, .83, .80, .89, 1, 0.95, 1, 0.91, .97, .89, .90 } }
lights/defaultPointLight
{
lightFalloffImage makeintensity( lights/square_light_simple_falloff.tga )
{
forceHighQuality
map lights/square_light_simple.tga
colored
zeroClamp
}
}
lights/defaultProjectedLight
{
lightFalloffImage _noFalloff
{
forceHighQuality
map lights/square_light_simple.tga
colored
zeroClamp
}
}
lights/ambientLight2
{
ambientLight
//lightFalloffImage makeintensity( lights/square_light_simple_falloff2.tga )
lightFalloffImage makeintensity( lights/square_light_simple.tga )
//lightFalloffImage makeintensity( lights/poop_falloff.tga )
{
forceHighQuality
map lights/square_light_simple.tga
colored
zeroClamp
}
}
lights/terrain_clouds_shadows
{
{
blend filter
forceHighQuality
//map invertColor(textures/skies/clouds_gray1_add.tga)
map textures/skies/clouds_ground_gray1_filter.tga
colored
scale 10.25, 10.25
translate time * -0.007, time * 0.001
//rgb 0.7
}
}
lights/plasma_fly
{
{
map lights/round_light2_simple_falloff.tga
zeroClamp
rotate time * 3.7
rgb flicker1[ time * 1 ]
colored
}
}
lights/jetStream
{
{
map lights/round_light2_simple_falloff.tga
zeroClamp
rgb jet_flicker1[ time * 1 ]
colored
}
}
lights/pdaPickupRadio
{
{
map lights/round_light2_simple_falloff.tga
zeroClamp
red 0.25 * lcdFlicker3[ time ]
green 0.25 * lcdFlicker3[ time ]
blue 0.23 * lcdFlicker3[ time ]
//colored
}
}

66
base/materials/lod.mtr Normal file
View file

@ -0,0 +1,66 @@
// ===========================================================================
//
// LOD system test materials
//
// ===========================================================================
models/lod_thing/lod1
{
qer_editorimage models/mapobjects_static/lod_thing/lod1.tga
noShadows
lod1
bumpmap _flat
{
blend diffusemap
map models/mapobjects_static/lod_thing/lod1.tga
}
}
models/lod_thing/lod2
{
qer_editorimage models/mapobjects_static/lod_thing/lod2.tga
noShadows
lod2
bumpmap _flat
{
blend diffusemap
map models/mapobjects_static/lod_thing/lod2.tga
}
}
models/lod_thing/lod3
{
qer_editorimage models/mapobjects_static/lod_thing/lod3.tga
noShadows
lod3
bumpmap _flat
{
blend diffusemap
map models/mapobjects_static/lod_thing/lod3.tga
}
}
models/lod_thing/lod4
{
qer_editorimage models/mapobjects_static/lod_thing/lod4.tga
noShadows
lod4
bumpmap _flat
{
blend diffusemap
map models/mapobjects_static/lod_thing/lod4.tga
}
}
models/lod_thing/lod4_persistent
{
qer_editorimage models/mapobjects_static/lod_thing/lod4.tga
noShadows
lod4
persistentLOD
bumpmap _flat
{
blend diffusemap
map models/mapobjects_static/lod_thing/lod4.tga
}
}

View file

@ -0,0 +1,425 @@
// --------------------------------------------------------------------------------
// S T A T I C M A P M O D E L S
// --------------------------------------------------------------------------------
models\static_vehicles\starship_parked
{
metal
unsmoothedTangents
{
blend diffusemap
map textures/grid1024.tga
}
/*{
blend filter
vertexProgram inkEffectLinear.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.00085, 0.0001, 1024.0, 5000.0
// line strength, line "blackness", edge-bias, far-edge-bias multiplier
vertexParm 1 700, 0.75, -6.25, 11.0
// far-edge-bias start, far-edge-bias range, far-ink-strength multiplier, far-ink-strength start
vertexParm 2 512.0, 2048.0, 5.0, 512.0
// far-ink-strength range, near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 512.0, 1.5, 2
fragmentProgram inkEffectLinear.vfp
fragmentMap 0 _currentDepth
maskDepth
}*/
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.0015, 0.0005, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0007, 0.05
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 3072.0, 180.0, 56.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 512.0, 1.5, 2.5
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
// ---------------------------------------------------------------------------------------
// PLANETS
// ---------------------------------------------------------------------------------------
models/planets/phaeton_clouds
{
translucent
noShadows
noSelfShadow
discrete
nonsolid
noimpact
{
forceHighQuality
nopicmip
maskColor
map makealpha(models/planets/cloud_layer_mask.tga)
}
{
//blend gl_dst_color, gl_one
blend gl_dst_alpha, gl_one
maskAlpha
forceHighQuality
nopicmip
//blend blend
map models/planets/cloud_layer_deform_add.tga
translate time * 0.0025, 1
}
}
models/planets/ganymede_clouds
{
translucent
noShadows
noSelfShadow
discrete
nonsolid
noimpact
{
forceHighQuality
nopicmip
maskColor
map makealpha(models/planets/cloud_layer_mask.tga)
}
{
//blend gl_dst_color, gl_one
blend gl_dst_alpha, gl_one
maskAlpha
forceHighQuality
nopicmip
//blend blend
map models/planets/cloud_layer_deform_add.tga
translate time * 0.015, 1
}
}
models/planets/phaeton_surface
{
noShadows
noSelfShadow
nonsolid
noimpact
unsmoothedTangents
{
blend diffusemap
map models/planets/phaeton_surface_d.tga
vertexColor
}
{
blend bumpmap
map models/planets/phaeton_surface_local.tga
}
// atmospheric glow is experimental; seems to only apply to physical polygons and is affected by vertex color of the mesh
{
blend add
map models/planets/glow_mask2.tga
vertexColor
red 0.157
green 0.694
blue 1.0
//glow
}
}
models/planets/ganymede_surface
{
noShadows
noSelfShadow
nonsolid
noimpact
unsmoothedTangents
{
blend diffusemap
map models/planets/ganymede_surface_d.tga
vertexColor
}
{
blend bumpmap
map models/planets/phaeton_surface_local.tga
}
// atmospheric glow is experimental; seems to only apply to physical polygons and is affected by vertex color of the mesh
{
blend add
map models/planets/glow_mask2.tga
vertexColor
red 0.157
green 0.694
blue 1.0
//glow
}
}
models/planets/moon_surface
{
noShadows
noSelfShadow
nonsolid
noimpact
unsmoothedTangents
{
blend diffusemap
map models/planets/moon_surface_d.tga
vertexColor
}
// atmospheric glow is experimental; seems to only apply to physical polygons and is affected by vertex color of the mesh
{
blend add
map models/planets/glow_mask2.tga
vertexColor
red 0.157
green 0.694
blue 1.0
//glow
}
}
models/planets/phaeton_atmosphere
{
noshadows
noimpact
translucent
{
forceHighQuality
nopicmip
maskColor
map makealpha(models/planets/fresnel_mask.tga)
}
/*{
blend gl_dst_alpha, gl_one
maskAlpha
forceHighQuality
nopicmip
vertexProgram simpleFresnel.vfp
vertexParm 0 2, 1.2, 0.0075, 0 // fresnel power, scale, bias
vertexParm 1 0.157, 0.694, 1, 0.5 // RGBA
fragmentProgram simpleFresnel.vfp
}*/
/*{
blend add
vertexProgram simpleFresnel.vfp
vertexParm 0 3, 0.5, 0.0075, 0 // fresnel power, scale, bias
vertexParm 1 0.157, 0.694, 1, 0.5 // RGBA
fragmentProgram simpleFresnel.vfp
}*/
}
models/planets/ganymede_atmosphere
{
noshadows
noimpact
translucent
{
forceHighQuality
nopicmip
maskColor
map makealpha(models/planets/fresnel_mask.tga)
}
/*{
blend gl_dst_alpha, gl_one
maskAlpha
forceHighQuality
nopicmip
vertexProgram simpleFresnel.vfp
vertexParm 0 2, 1.2, 0.0075, 0 // fresnel power, scale, bias
//vertexParm 1 0.157, 0.694, 1, 0.5 // RGBA
vertexParm 1 0.545, 0.698, 0.796, 0.5 // RGBA
fragmentProgram simpleFresnel.vfp
} */
}
models/planets/planetary_debris
{
noShadows
//noSelfShadow
nonsolid
noimpact
unsmoothedTangents
{
blend diffusemap
map models/planets/planetary_debris_d.tga
}
{
blend bumpmap
map models/planets/planetary_debris_local.tga
}
}
// --------------------------------------------------------------------------------------------------
// ARCHITECTURE
// --------------------------------------------------------------------------------------------------
models/arch/ganymede_landing_pad
{
unsmoothedTangents
stone
noShadows
{
blend diffusemap
map models/mapobjects_static/architecture/landing_pad_d3.tga
}
{
blend filter
vertexProgram inkEffect.vfp
vertexParm 0 0.0012, 0.0003, 2048.0, 5000.0 // ink line size, ink line size far, ink size change start, ink size change range
vertexParm 1 700, 0.75, -0.0002, 0.1 // line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 2 2048.0, 3072.0, 180.0, 56.0 // far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 3 512.0, 1, 2.5 // far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
models/arch/ganymede_landing_pad_ramp
{
unsmoothedTangents
metal
//noShadows
{
blend diffusemap
map models/mapobjects_static/architecture/landing_pad_ramp_d.tga
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.0015, 0.0005, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0007, 0.05
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 3072.0, 180.0, 56.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 512.0, 1.5, 2.5
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
models/arch/ganymede_landing_pad_railing
{
//unsmoothedTangents
metal
{
blend diffusemap
map models/mapobjects_static/architecture/landing_pad_railing_d.tga
}
/*{
blend bumpmap
map models/mapobjects_static/architecture/landing_pad_railing_local.tga
}*/
{
blend filter
vertexProgram inkEffect.vfp
vertexParm 0 0.001, 0.0003, 2048.0, 5000.0 // ink line size, ink line size far, ink size change start, ink size change range
vertexParm 1 700, 0.75, -0.0002, 0.1 // line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 2 2048.0, 3072.0, 180.0, 56.0 // far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 3 512.0, 1, 2.5 // far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
// --------------------------------------------------------------------------
// DOORS
// --------------------------------------------------------------------------
models/arch/personel_entry_door
{
metal
// noShadows
// nonsolid
// forceshadows
collision
// unsmoothedTangents
qer_editorimage models/mapobjects_static/doors/personnel_entry_door1_d.tga
{
blend diffusemap
map models/mapobjects_static/doors/personnel_entry_door1_d.tga
}
specularmap models/mapobjects_static/doors/personnel_entry_door1_s.tga
bumpmap models/mapobjects_static/doors/personnel_entry_door1_local.tga
{
blend filter
vertexProgram inkEffect.vfp
vertexParm 0 0.001, 0.0003, 2048.0, 5000.0 // ink line size, ink line size far, ink size change start, ink size change range
vertexParm 1 700, 0.75, -0.0002, 0.1 // line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 2 2048.0, 3072.0, 180.0, 56.0 // far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 3 512.0, 1, 2.5 // far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
// --------------------------------------------------------------------------
// Devices with GUIs
// --------------------------------------------------------------------------
models/devices/touchscreen_device1_2screens
{
metal
noShadows
unsmoothedTangents
qer_editorimage models/md5/mapobjects_animated/devices/touchscreen_device1_2screens_d.tga
{
blend diffusemap
map models/md5/mapobjects_animated/devices/touchscreen_device1_2screens_d.tga
}
{
blend filter
vertexProgram inkEffect.vfp
vertexParm 0 0.001, 0.0003, 2048.0, 5000.0 // ink line size, ink line size far, ink size change start, ink size change range
vertexParm 1 700, 0.75, -0.0002, 0.1 // line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 2 2048.0, 3072.0, 180.0, 56.0 // far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 3 512.0, 1, 2.5 // far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}

View file

@ -0,0 +1,591 @@
// ------------------------------------------------------------------------------
// WEATHER
// ------------------------------------------------------------------------------
textures/particles/snowflake1
{
qer_editorimage textures/particles/snowflake1a.tga
noShadows
translucent
nonsolid
// sort 110
// {
// blend blend
// map textures/particles/snowflake1a.tga
// }
{
//blend add
blend blend
//vertexProgram softParticleRGB.vfp
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
//fragmentProgram softParticleRGB.vfp
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
//fragmentMap 1 forceHighQuality textures/particles/snowflake1b.tga // certain textures should be forced to high quality for the shader to work properly
fragmentMap 1 forceHighQuality textures/particles/snowflake1b_alpha.tga // certain textures should be forced to high quality for the shader to work properly
}
/*{
blend blend
vertexProgram foggedBlendSoft.vfp
vertexParm 0 0.39, 0.44, 0.48, 1 // fog color
vertexParm 1 0.000001219512, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
vertexParm 2 0.1, 0, 0, 0 // "softness" factor
fragmentProgram foggedBlendSoft.vfp
fragmentMap 0 forceHighQuality textures/particles/snowflake1b_alpha.tga // source texture ( preferably with alpha-channel )
fragmentMap 1 _currentDepth // depth image
}*/
}
textures/particles/snowflakes_blowdust1
{
//qer_editorimage textures/particles/snowflakes_blowdust1a.tga
qer_editorimage textures/particles/snowflakes_blowdust1a_trans.tga
noShadows
translucent
nonsolid
//sort 110
/*{
blend add
map textures/particles/snowflakes_blowdust1.tga
}
{
blend blend
map textures/particles/snowflakes_blowdust1a_trans.tga
alpha 1
}*/
{
//blend add
blend blend
//vertexProgram softParticleRGB.vfp
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.005, 0, 0, 0 // "softness" factor
//fragmentProgram softParticleRGB.vfp
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
//fragmentMap 1 forceHighQuality textures/particles/snowflakes_blowdust1a.tga // certain textures should be forced to high quality for the shader to work properly
fragmentMap 1 forceHighQuality textures/particles/snowflakes_blowdust1a_alpha.tga // certain textures should be forced to high quality for the shader to work properly
}
/*{
blend blend
vertexProgram foggedBlendSoft.vfp
vertexParm 0 0.39, 0.44, 0.48, 1 // fog color
vertexParm 1 0.000001219512, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; )
vertexParm 2 0.005, 0, 0, 0 // "softness" factor
fragmentProgram foggedBlendSoft.vfp
fragmentMap 0 forceHighQuality textures/particles/snowflakes_blowdust1a_alpha.tga // source texture ( preferably with alpha-channel )
fragmentMap 1 _currentDepth // depth image
}*/
}
textures/particles/snowflakes_blowdust_ground1
{
qer_editorimage textures/particles/snowflakes_blowdust_ground1.tga
noShadows
translucent
nonsolid
twosided
polygonOffset 0.1
// {
// blend add
// map textures/particles/snowflakes_blowdust1.tga
// }
{
blend add
//blend blend
vertexProgram softParticleRGB.vfp
//vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleRGB.vfp
//fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/snowflakes_blowdust_ground1.tga // certain textures should be forced to high quality for the shader to work properly
//fragmentMap 1 forceHighQuality textures/particles/snowflakes_blowdust_ground1_alpha.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/snowflakes_small_blowdust_ground1
{
qer_editorimage textures/particles/snowflakes_small_blowdust_ground1.tga
noShadows
translucent
nonsolid
// twosided
// polygonOffset 0.1
// {
// blend add
// map textures/particles/snowflakes_blowdust1.tga
// }
{
//blend add
blend blend
//vertexProgram softParticleRGB.vfp
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
//fragmentProgram softParticleRGB.vfp
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
//fragmentMap 1 forceHighQuality textures/particles/snowflakes_small_blowdust_ground1.tga // certain textures should be forced to high quality for the shader to work properly
fragmentMap 1 forceHighQuality textures/particles/snowflakes_small_blowdust_ground1_alpha.tga // certain textures should be forced to high quality for the shader to work properly
}
}
// ------------------------------------------------------------------------------
// P R O J E C T I L E S
// ------------------------------------------------------------------------------
textures/particles/rocket_flame
{
noselfShadow
noshadows
translucent
discrete
nonsolid
noimpact
//sort decal
//sort 110
sort nearest
/*{
blend add
map textures/particles/rocket_flame_a.tga
vertexcolor
colored
} */
/*{
blend add
vertexProgram foggedAdd.vfp
vertexParm 0 0.39, 0.44, 0.48, 1 // fog color
vertexParm 1 0.00001219512, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; ) where fadeRange is shaderParms 3 of the fog, fadeStart is distance from the camera in game's units
fragmentProgram foggedAdd.vfp
fragmentMap 0 textures/particles/rocket_flame_a.tga // source texture
vertexcolor
colored
}*/
}
textures/particles/rocket_smoke
{
noselfShadow
noshadows
translucent
discrete
nonsolid
noimpact
//sort decal
sort 110
/* {
blend blend
map textures/particles/rocket_smoke_a.tga
vertexcolor
colored
} */
{
blend blend
vertexProgram foggedBlend.vfp
vertexParm 0 0.39, 0.44, 0.48, 1 // fog color
vertexParm 1 0.00001219512, 0.0, 0, 0 // fog fade range, fog start distance ( to "sync" to scene units : zScale = 1.0 / fadeRange; zBias = -( 1.0 / fadeRange ) * fadeStart; ) where fadeRange is shaderParms 3 of the fog, fadeStart is distance from the camera in game's units
fragmentProgram foggedBlend.vfp
fragmentMap 0 textures/particles/rocket_smoke_a.tga // source texture ( preferably with alpha-channel )
vertexcolor
colored
}
/* {
blend blend
vertexProgram particleBlend_SoftDistFog.glsl
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
vertexParm 1 128, 128, 0, 0 // distanceFadeStart, distanceFadeRange
vertexParm 2 1.0, 1.0, 1.0, 0.00005 // pseudoFog color RGB, "fog thickness" value
fragmentProgram particleBlend_SoftDistFog.glsl
fragmentMap 0 _currentDepth
fragmentMap 1 textures/particles/rocket_smoke_a.tga
vertexColor
}*/ //used in bfg engine
}
textures/particles/sentinelCOMAR_jetstream_small_dark
{
translucent
noShadows
noSelfShadow
twosided
//sort 120
clamp
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/round_sharp_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/sentinelCOMAR_jetstream_small_light
{
translucent
noShadows
noSelfShadow
twosided
//sort 121
clamp
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/round_sharp_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/sentinelCOMAR_jetstream_main_dark
{
translucent
noShadows
noSelfShadow
twosided
//sort 121
clamp
/*{
blend blend
map textures/particles/round_sharp_blend.tga
clamp
vertexColor
}*/
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/round_sharp_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/sentinelCOMAR_jetstream_main_light
{
translucent
noShadows
noSelfShadow
twosided
//sort 122
clamp
/*{
blend blend
map textures/particles/round_sharp_blend.tga
vertexColor
clamp
}*/
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/round_sharp_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
// ------------------------------------------------------------------------------
// S M O K E S
// ------------------------------------------------------------------------------
textures/particles/smoke_anime_dark
{
translucent
noShadows
noSelfShadow
twosided
//sort 101
//sort 120
sort 110
/* {
blend blend
map textures/particles/smoke_anime3_test_blend.tga
vertexColor
//clamp
} */
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/smoke_anime3_test_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
/* {
blend blend
vertexProgram particleBlend_SoftDistFog.glsl
vertexParm 0 0.05, 0, 0, 0 // "softness" factor
vertexParm 1 128, 128, 0, 0 // distanceFadeStart, distanceFadeRange
vertexParm 2 1, 1, 1, 0.000005 // pseudoFog color RGB, "fog thickness" value
fragmentProgram particleBlend_SoftDistFog.glsl
fragmentMap 0 _currentDepth
fragmentMap 1 textures/particles/smoke_anime3_test_blend.tga
vertexColor
}*/ // in bfg engine
}
textures/particles/smoke_anime_light
{
translucent
noShadows
noSelfShadow
twosided
//sort 102
//sort 121
sort 111
/*{
blend blend
map textures/particles/smoke_anime3_test_blend.tga
vertexColor
clamp
}*/
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/smoke_anime3_test_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
/* {
blend blend
vertexProgram particleBlend_SoftDistFog.glsl
vertexParm 0 0.05, 0, 0, 0 // "softness" factor
vertexParm 1 128, 128, 0, 0 // distanceFadeStart, distanceFadeRange
vertexParm 2 1, 1, 1, 0.000005 // pseudoFog color RGB, "fog thickness" value
fragmentProgram particleBlend_SoftDistFog.glsl
fragmentMap 0 _currentDepth
fragmentMap 1 textures/particles/smoke_anime3_test_blend.tga
vertexColor
}*/
}
textures/particles/smoke_anime_details
{
translucent
noShadows
noSelfShadow
twosided
//sort 103
//sort 122
/*{
blend blend
map textures/particles/smoke_anime3detail_test_blend.tga
vertexColor
clamp
}*/
{
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/smoke_anime3detail_test_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/smoke_anime_stripe1_dark
{
translucent
noShadows
noSelfShadow
twosided
//sort 102
//sort 121
{
blend blend
map textures/particles/smoke_anime_stripe1_blend.tga
vertexColor
clamp
}
/
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/smoke_anime3_test_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/smoke_anime_stripe2_dark
{
translucent
noShadows
noSelfShadow
twosided
//sort 102
//sort 121
{
blend blend
map textures/particles/smoke_anime_stripe2_blend.tga
vertexColor
clamp
}
/
blend blend
vertexColor
vertexProgram softParticleAlpha.vfp
vertexParm 0 0.01, 0, 0, 0 // "softness" factor
fragmentProgram softParticleAlpha.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/smoke_anime3_test_blend.tga // certain textures should be forced to high quality for the shader to work properly
}
}
textures/particles/plasma_burn_smoke_puff
{
noSelfShadow
noShadows
translucent
discrete
nonsolid
sort 122
clamp
{
blend blend
map textures/particles/smoke_puff1.tga
colored
vertexColor
}
}
// --------------------------------------------------------
// BLOOD PARTICLES
// --------------------------------------------------------
textures/particles/blood_blob1
{
noSelfShadow
noShadows
translucent
discrete
twosided
nonsolid
noimpact
{
blend blend
map textures/particles/blood_particle1.tga
vertexColor
colored
}
}
textures/particles/blood_blob2
{
noSelfShadow
noShadows
translucent
discrete
twosided
nonsolid
noimpact
{
blend blend
map textures/particles/blood_particle2.tga
vertexColor
colored
}
}
textures/particles/blood_blob3
{
noSelfShadow
noShadows
translucent
discrete
twosided
nonsolid
noimpact
{
blend blend
map textures/particles/blood_particle3.tga
vertexColor
colored
}
}
textures/particles/blood_splatter1_thin
{
noSelfShadow
noShadows
translucent
discrete
twosided
nonsolid
noimpact
{
blend blend
map textures/particles/blood_splatter1_thin.tga
vertexColor
colored
}
}

View file

@ -0,0 +1,71 @@
textures/particles/particletest_blend_soft
{
qer_editorimage textures/particles/smokepuffb.tga
noShadows
translucent
sort 10
{
blend blend
vertexProgram particleBlend_SoftDistFog.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
vertexParm 1 128, 128, 0, 0 // distanceFadeStart, distanceFadeRange
vertexParm 2 0, 0, 1, 0.001 // pseudoFog color RGB, "fog thickness" value
fragmentProgram particleBlend_SoftDistFog.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 textures/particles/smoke01.tga
vertexColor
}
}
textures/particles/particletest_add_soft
{
qer_editorimage textures/particles/smokepuffb.tga
noShadows
translucent
sort 10
{
blend add
vertexProgram particleAdd_SoftDistFog.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
vertexParm 1 128, 128, 0, 0
vertexParm 2 0, 0, 1, 0.001
fragmentProgram particleAdd_SoftDistFog.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 textures/particles/smoke01.tga
vertexColor
}
}
textures/particles/particletest_filter_soft
{
qer_editorimage textures/particles/smokepuffb.tga
noShadows
translucent
sort 10
{
blend filter
vertexProgram particleFilter_SoftDistFog.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
vertexParm 1 128, 128, 0, 0 //
vertexParm 2 0, 0, 1, 0.001
fragmentProgram particleFilter_SoftDistFog.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 textures/particles/smoke_filter.tga
vertexColor
}
}

View file

@ -0,0 +1,39 @@
textures/skies/portal_sky
{
qer_editorimage textures/editor/portal_sky.tga
forceOpaque // will still seal levels
noshadows
noimpact
sort portalSky
{
map _currentRender
clamp
screen
// fix up the projection based on the screen coords
translate global4 * 0.5, global5 * 0.5
scale global4 * 0.5, global5 * 0.5
}
}
textures/editor/portal_sky
{
qer_editorimage textures/editor/portal_sky.tga
forceOpaque // will still seal levels
noshadows
noimpact
sort portalSky
{
map _currentRender
clamp
screen
// fix up the projection based on the screen coords
translate global4 * 0.5, global5 * 0.5
scale global4 * 0.5, global5 * 0.5
}
}

146
base/materials/sfx.mtr Normal file
View file

@ -0,0 +1,146 @@
table strip6frames { snap { 0, 1, 2, 3, 4, 5 } } // used to playback blood animation strip of 6 frames
// --------------------------------------------------------------------------------
// SPECIAL EFFECT MATERIALS
// --------------------------------------------------------------------------------
textures/sfx/door_lights1_onoff
{
translucent
noshadows
noSelfShadow
nonsolid
//forceoverlays
sort decal
{
if ( parm7 == 0 )
blend blend
map textures/sfx/door_lights1.tga
red ( 255 / 255 )
green ( 15 / 255 )
blue ( 0 / 255 )
alphaTest 0.5
}
{
if ( parm7 == 0 )
blend add
map textures/sfx/door_lights1.tga
red ( 255 / 255 )
green ( 15 / 255 )
blue ( 0 / 255 )
glow
}
{
if ( parm7 == 1 )
blend blend
map textures/sfx/door_lights1.tga
red ( 142 / 255 )
green ( 219 / 255 )
blue ( 255 / 255 )
alphaTest 0.5
}
{
if ( parm7 == 1 )
blend add
map textures/sfx/door_lights1.tga
red ( 142 / 255 )
green ( 219 / 255 )
blue ( 255 / 255 )
glow
}
}
textures/sfx/door_lights1_locked // red lights
{
translucent
noshadows
noSelfShadow
nonsolid
sort decal
{
blend blend
map textures/sfx/door_lights1.tga
red ( 255 / 255 )
green ( 15 / 255 )
blue ( 0 / 255 )
alphaTest 0.5
}
{
blend add
map textures/sfx/door_lights1.tga
red ( 255 / 255 )
green ( 15 / 255 )
blue ( 0 / 255 )
glow
}
}
textures/sfx/door_lights1_open // blue lights
{
translucent
noshadows
noSelfShadow
nonsolid
sort decal
{
blend blend
map textures/sfx/door_lights1.tga
red ( 142 / 255 )
green ( 219 / 255 )
blue ( 255 / 255 )
alphaTest 0.5
}
{
blend add
map textures/sfx/door_lights1.tga
red ( 142 / 255 )
green ( 219 / 255 )
blue ( 255 / 255 )
glow
}
}
// -------------------------------------------------------------------------
// animated blood splatter (on impact with living bodies)
// -------------------------------------------------------------------------
textures/sfx/blood_string1
{
noSelfShadow
noshadows
translucent
discrete
twosided
nonsolid
noimpact
qer_editorimage textures/sfx/blood_string1_strip.tga
{
blend blend
map textures/sfx/blood_string1_strip.tga
scale 1 , 1 / 6
scroll 0 , strip6frames[ time * 2 ]
colored
vertexColor
}
}
// --------------------------------------------------------------------------------
// FLARES
// --------------------------------------------------------------------------------
textures/sfx/flare_basic
{
noshadows
translucent
nonsolid
deform flare ( 16 + parm4 ) // shaderParm4 set on flare's entity sets its size; e.g. shaderParm4 10 would result in ( 16 + 10 )
qer_editorimage textures/editor/flare.tga
{
if ( parm7 == 0 ) // if a light with this flare breaks, flare gets removed
blend add
map _quadratic
colored
vertexcolor
}
}

View file

@ -0,0 +1,254 @@
textures/blurX_16_512
{
{
blend gl_one, gl_zero
vertexProgram gaussBlurX_15.vfp
vertexParm 0 parm0
fragmentProgram gaussBlurX_15.vfp
fragmentMap 0 _glow512
}
}
textures/blurY_16_512
{
{
blend gl_one, gl_zero
vertexProgram gaussBlurY_15.vfp
vertexParm 0 parm0
fragmentProgram gaussBlurY_15.vfp
fragmentMap 0 _glow512
}
}
textures/blurX_16_256
{
{
blend gl_one, gl_zero
vertexProgram gaussBlurX_15.vfp
vertexParm 0 parm0
fragmentProgram gaussBlurX_15.vfp
fragmentMap 0 _glow256
}
}
textures/blurY_16_256
{
{
blend gl_one, gl_zero
vertexProgram gaussBlurY_15.vfp
vertexParm 0 parm0
fragmentProgram gaussBlurY_15.vfp
fragmentMap 0 _glow256
}
}
textures/blurX_16_128
{
{
blend blend
vertexProgram blurX_16_128.vfp
fragmentProgram blurX_16_128.vfp
fragmentMap 0 _glow128
//colored
}
}
textures/blurY_16_128
{
{
blend blend
vertexProgram blurY_16_128.vfp
fragmentProgram blurY_16_128.vfp
fragmentMap 0 _glow128
//colored
}
}
textures/glowComp
{
{
blend blend
vertexProgram glowComp.vfp
vertexParm 0 parm0, parm1, 1, 1 // effect scale of 512 image, effect scale of 256 image, unused, unused
fragmentProgram glowComp.vfp
fragmentMap 0 _currentRender
fragmentMap 1 _glow512
fragmentMap 2 _glow256
}
}
textures/glowMaterial
{
{
blend blend
map _currentGlow
}
}
// glow test materials
textures/inkTest/btex1a_glow
{
qer_editorimage textures/base_floor/a_bluetex1a_02.tga
{
blend diffusemap
map _white
red 0.5
green 0.5
blue 0.5
}
{
blend specularmap
map _white
rgb 0.5
}
{
blend bumpmap
map _flat
}
{
blend filter
vertexProgram depthTest.vfp
vertexParm 0 0.002, 0.75, 700, 1 // ink line size, ink strength
vertexParm 1 0.0075, 0.75, 32.0, 64.0 // inner edge threshold near, inner edge threshold far, nearDistance, lerpRange
vertexParm 2 1200.0, 1024.0 // fadeStart, fadeRange
vertexParm 3 0.00095, 512.0, 4096.0, -0.00060
fragmentProgram depthTest.vfp
fragmentMap 0 _currentDepth
maskDepth
}
{
blend blend
map _white
glow
}
}
textures/inkTest/btex1a_glow2
{
qer_editorimage textures/base_floor/a_bluetex1a_02.tga
{
blend diffusemap
map _white
red 0.5
green 0.5
blue 0.5
}
{
blend specularmap
map _white
rgb 0.5
}
{
blend bumpmap
map _flat
}
{
blend filter
vertexProgram depthTest.vfp
vertexParm 0 0.002, 0.75, 700, 1 // ink line size, ink strength
vertexParm 1 0.0075, 0.75, 32.0, 64.0 // inner edge threshold near, inner edge threshold far, nearDistance, lerpRange
vertexParm 2 1200.0, 1024.0 // fadeStart, fadeRange
vertexParm 3 0.00095, 512.0, 4096.0, -0.00060
fragmentProgram depthTest.vfp
fragmentMap 0 _currentDepth
maskDepth
}
{
blend add
map textures/glowtest.tga
rgb 0.5
}
{
blend blend
map textures/glowtest.tga
glow
}
}
textures/sfx/flare_glow
{
noshadows
translucent
nonsolid
deform flare 32
qer_editorimage textures/editor/flare.tga
{
if ( parm7 == 0 )
blend add
map _quadratic
//colored
rgb 0.25
vertexcolor
glow
}
}
models/mapobjects_static/glowing_cube
{
qer_editorimage models/mapobjects_static/glowing_cube_d.tga
unsmoothedTangents
{
blend diffusemap
map models/mapobjects_static/glowing_cube_d.tga
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.0015, 0.0001, 2048.0, 3000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.00085, 0.0005
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 1024.0, 9.0, 256.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 2048.0, 2, 3
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
{
blend add
map models/mapobjects_static/glowing_cube_glow.tga
rgb 0.85
}
{
blend blend
map models/mapobjects_static/glowing_cube_glow.tga
glow
}
}

View file

@ -0,0 +1,170 @@
textures/inkTest/btex1a
{
qer_editorimage textures/base_floor/a_bluetex1a_02.tga
//bumpmap addnormals( textures/base_floor/a_bluetex1a_local.tga, heightmap( textures/base_floor/a_bluetex1a_b02.tga, 1 ) )
//diffusemap textures/base_floor/a_bluetex1a_d02.tga
{
blend diffusemap
map _white
red 0.5
green 0.5
blue 0.5
}
{
blend specularmap
map _white
rgb 0.5
}
{
blend bumpmap
map _flat
}
{
blend filter
vertexProgram depthTest.vfp
//vertexParm 0 0.0012, 0.5, 400, 1 // ink line size, ink strength
//vertexParm 1 0.0075, 0.75, 32.0, 64.0 // inner edge threshold near, inner edge threshold far, nearDistance, lerpRange
//vertexParm 2 1200.0, 1024.0 // fadeStart, fadeRange
//vertexParm 3 0.001, 256.0, 256.0, -0.00025 // ink line size far, sizeChangeStart, sizeChangeRange, inkBias ( should be negative )
vertexParm 0 0.0012, 0.75, 700, 1 // ink line size, ink strength
vertexParm 1 0.0075, 0.75, 32.0, 64.0 // inner edge threshold near, inner edge threshold far, nearDistance, lerpRange
vertexParm 2 1200.0, 1024.0 // fadeStart, fadeRange
vertexParm 3 0.00095, 512.0, 4096.0, -0.00060
fragmentProgram depthTest.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
textures/inkTest/a_diafloor_1b_fin
{
qer_editorimage textures/base_floor/a_diafloor_1b_fin.tga
//diffusemap textures/base_floor/a_diafloor_d1b_fin.tga
//specularmap textures/base_floor/a_diafloor_s1_fin.tga
//bumpmap addnormals( textures/base_floor/a_diafloor_local_fin.tga , heightmap( textures/base_floor/a_diafloor_b1_fin.tga, 4 ) )
{
blend diffusemap
map _white
red 0.65
green 0.5
blue 0.35
}
{
blend specularmap
map _white
rgb 0.5
}
{
blend bumpmap
map _flat
}
{
blend filter
vertexProgram depthTest.vfp
//vertexParm 0 0.002, 0.5, 400, 1 // ink line size, ink strength
//vertexParm 1 0.0075, 0.75, 32.0, 64.0 // inner edge threshold near, inner edge threshold far, nearDistance, lerpRange
//vertexParm 2 1200.0, 1024.0 // fadeStart, fadeRange
//vertexParm 3 0.001, 256.0, 256.0, -0.00025 // ink line size far, sizeChangeStart, sizeChangeRange, inkBias ( should be negative )
vertexParm 0 0.0012, 0.75, 700, 1 // ink line size, ink strength
vertexParm 1 0.0075, 0.75, 32.0, 64.0 // inner edge threshold near, inner edge threshold far, nearDistance, lerpRange
vertexParm 2 1200.0, 1024.0 // fadeStart, fadeRange
vertexParm 3 0.00095, 512.0, 4096.0, -0.00060
fragmentProgram depthTest.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}
shaderDemos/testReflect2
{
noshadows
qer_editorimage textures/base_floor/a_diafloor_d1b_fin.tga
{
mirrorRenderMap 512 256
blend add
maskColor
}
{
blend add
vertexProgram bumpyMirror.vfp
vertexParm 0 0, 0 // texture scrolling
vertexParm 1 2 // magnitude of the distortion
vertexParm 2 0.001953125, 0.00390625, 1, 0 // ( 1 / mirrorMapWidth, 1 / mirrorMapHeight )
vertexParm 3 0.3 // how much of the reflection will be added
//vertexParm 2 0.00390625, 0.0078125, 0.5, 0.5 // ( 1 / mirrorMapWidth, 1 / mirrorMapHeight )
fragmentProgram bumpyMirror.vfp
fragmentMap 0 _scratch // mirror image
fragmentMap 1 _flat
}
//bumpmap textures/base_floor/a_diafloor_local_fin.tga
{
blend diffuseMap
//map textures/base_floor/a_diafloor_d1b_fin.tga
map _white
rgb 0.25
}
{
blend specularmap
//map textures/base_floor/a_diafloor_d1b_fin.tga
map _white
rgb 0.25
}
//specularmap textures/base_floor/a_diafloor_s1_fin.tga
}
shaderDemos/testReflect
{
noshadows
qer_editorimage textures/base_floor/a_diafloor_d1b_fin.tga
{
mirrorRenderMap 512 256
blend add
maskColor
}
{
blend add
vertexProgram bumpyMirror.vfp
vertexParm 0 0, 0 // texture scrolling
vertexParm 1 2 // magnitude of the distortion
vertexParm 2 0.001953125, 0.00390625, 2.5, 0 // ( 1 / mirrorMapWidth, 1 / mirrorMapHeight )
vertexParm 3 0.3 // how much of the reflection will be added
//vertexParm 2 0.00390625, 0.0078125, 0.5, 0.5 // ( 1 / mirrorMapWidth, 1 / mirrorMapHeight )
fragmentProgram bumpyMirror.vfp
fragmentMap 0 _scratch // mirror image
fragmentMap 1 textures/base_floor/a_diafloor_local_fin.tga
}
bumpmap textures/base_floor/a_diafloor_local_fin.tga
{
blend diffuseMap
//map textures/base_floor/a_diafloor_d1b_fin.tga
map _white
rgb 0.25
}
{
blend specularmap
//map textures/base_floor/a_diafloor_d1b_fin.tga
map _white
rgb 0.25
}
//specularmap textures/base_floor/a_diafloor_s1_fin.tga
}

View file

@ -0,0 +1,66 @@
textures/test/fresnel
{
{
map _black
}
{
blend add
vertexProgram simpleFresnel.vfp
vertexParm 0 4, 0.5, 0, 0 // fresnelPower, fresnelScale, fresnelBias
vertexParm 1 1, 1, 1, 1 // RGBA Tint
fragmentProgram simpleFresnel.vfp
fragmentMap 0 normalMap textures/sfx/heathaze_local.tga // normalmap, use _flat otherwise
fragmentMap 1 textures/sfx/heathaze_local.tga // optional texture to multiply with
}
}
textures/test/reflectiveBlurred
{
noshadows
{
mirrorRenderMap 512 256
blend blend
alpha 1
translate 0.5 , 0.5
scale 0.5 , 0.5
}
}
textures/fresnel_sphere
{
{
blend bumpmap // this stage is needed to workaround issue of not having cubeMap reflections without diffusemap stage
map _flat
}
{
vertexProgram heatHaze.vfp
vertexParm 0 0 , 0 // texture scrolling
vertexParm 1 3.75 // magnitude of the distortion
fragmentProgram heatHaze.vfp
fragmentMap 0 _currentRender
fragmentMap 1 normalMap textures/sfx/heathaze_local.tga // the normal map for distortion
}
{
blend gl_dst_alpha, gl_one
maskalpha
cubeMap env/test // envshot cmd has to be issues when in 640x480 resolution (r_mode 3) and g_fov 90 to avoid artifacts
red Parm0
green Parm1
blue Parm2
texgen reflect
}
{
blend add
vertexProgram simpleFresnel.vfp
vertexParm 0 5, 1, 0, 0 // fresnelPower, fresnelScale, fresnelBias
vertexParm 1 0, 1, 1, 1 // RGBA Tint
fragmentProgram simpleFresnel.vfp
fragmentMap 0 normalMap textures/sfx/heathaze_local.tga // normalmap, use _flat otherwise
fragmentMap 1 textures/sfx/heathaze_local.tga // optional texture to multiply with
}
}

View file

@ -0,0 +1,77 @@
textures/skies/test_skybox
{
qer_editorimage textures/editor/test_skybox.tga
noFragment
noshadows
nooverlays
noimpact
forceOpaque // allows for transparent windows to be drawn on top (in front) of the sky
{
blend add // allows for transparent windows to be drawn on top (in front) of the sky
forceHighQuality
//cameraCubeMap env/test_sky2t
cameraCubeMap env/sky_gray_cloudy2_fogged
texgen skybox
texgen wobblesky .0 .0 .0
}
}
textures/skies/clouds_gray_layer1
{
qer_editorimage textures/skies/clouds_gray_layer1.tga
translucent
noshadows
{
forceHighQuality
nopicmip
maskcolor
map makealpha(textures/skies/skydome_cloud_mask.tga)
}
{
blend gl_dst_alpha, gl_one
maskalpha
forceHighQuality
nopicmip
//map textures/skies/clouds_gray_layer1_add.tga
map textures/skies/clouds_gray1_add.tga
//red 0.4
//blue 0.01
//green 0.1
scale 1.55, 1.55
translate time * 0.001, time * 0.015
}
}
textures/skies/skybox_black
{
qer_editorimage textures/colors/black.tga
noFragment
noshadows
nooverlays
noimpact
forceOpaque // allows for transparent windows to be drawn on top (in front) of the sky
{
blend add // allows for transparent windows to be drawn on top (in front) of the sky
forceHighQuality
cameraCubeMap env/pure_black
texgen skybox
texgen wobblesky .0 .0 .0
}
}
textures/skies/skybox_deep_space
{
qer_editorimage textures/editor/skybox_deep_space.tga
noFragment
noshadows
nooverlays
noimpact
forceOpaque // allows for transparent windows to be drawn on top (in front) of the sky
{
blend add // allows for transparent windows to be drawn on top (in front) of the sky
forceHighQuality
cameraCubeMap env/deep_space
texgen skybox
texgen wobblesky .01 .01 .01
}
}

View file

@ -0,0 +1,22 @@
// soft particle test
textures/particles/smokepuff_soft
{
qer_editorimage textures/particles/smokepuffb.tga
noShadows
translucent
sort 10
{
blend add
vertexProgram softParticleRGB.vfp
vertexParm 0 0.1, 0, 0, 0 // "softness" factor
fragmentProgram softParticleRGB.vfp
fragmentMap 0 _currentDepth
fragmentMap 1 forceHighQuality textures/particles/smokepuffx.tga // certain textures should be forced to high quality for the shader to work properly
//vertexColor
}
}

View file

@ -0,0 +1,124 @@
// ---------------------------------------------------------------------------
// PLAYER's BUGGY
// ---------------------------------------------------------------------------
models/md5/vehicles/buggy/buggy
{
noShadows
noSelfShadow
unsmoothedTangents
{
blend diffusemap
map models/md5/vehicles/buggy/buggy2_d.tga
}
{
maskcolor
map makealpha( scale( models/md5/vehicles/buggy/buggy2_reflection_mask1.tga, 1.0, 0.5, 0.85, 1.0 )) // same as alpha 0.85, but can manipulate particular RGB values for more elaborate reflections
//map makealpha(models/md5/vehicles/buggy/buggy2_reflection_mask1.tga)
//alpha 0.85 // used for fine tuning of cubemap reflections
}
{
//blend gl_dst_color, gl_one
blend gl_dst_alpha, gl_one
maskalpha
cubeMap env/cubemap_start
texgen reflect
}
/*{
blend bumpmap
map models/md5/vehicles/buggy/buggy2_local.tga
} */
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.0008, 0.0003, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0007, 0.01
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 3072.0, 180.0, 56.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 512.0, 2, 3.5
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
/*{
blend filter
vertexProgram inkEffectLinear.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.00085, 0.0001, 128.0, 2024.0
// line strength, line "blackness", edge-bias, far-edge-bias multiplier
vertexParm 1 700, 0.75, -2.37, 10.0
// far-edge-bias start, far-edge-bias range, far-ink-strength multiplier, far-ink-strength start
vertexParm 2 32.0, 512.0, 6.0, 128.0
// far-ink-strength range, near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 2048.0, 2, 1.0
fragmentProgram inkEffectLinear.vfp
fragmentMap 0 _currentDepth
maskDepth
} */
{
blend add
map models/md5/vehicles/buggy/buggy2_lights.tga
//scale 4 , 4
}
{
blend add
map models/md5/vehicles/buggy/buggy2_glow.tga
//scale 4 , 4
glow
}
}
models/vehicles/buggy_tire
{
noShadows
noSelfShadow
//unsmoothedTangents
//nonsolid
{
blend diffusemap
map models/md5/vehicles/buggy/tire2_d.tga
}
{
blend bumpmap
map models/md5/vehicles/buggy/tire2_local.tga
}
{
blend filter
vertexProgram inkEffect.vfp
// ink line size, ink line size far, ink size change start, ink size change range
vertexParm 0 0.001, 0.0003, 2048.0, 5000.0
// line strength, line "blackness", edge-bias (lower values produce more inking on inner creases close up), far-edge-bias multiplier (?)
vertexParm 1 700, 0.75, -0.0002, 0.1
// far-edge-bias start (how far from the view far-range algo kicks in; 2048 is a good value), far-edge-bias range (), far-ink-strength multiplier (the higher the more crease inking on the far away objects), far-ink-strength start
vertexParm 2 2048.0, 3072.0, 180.0, 56.0
// far-ink-strength range (higher number will fade away inks sooner), near ink edge scale, far ink edge scale ( based on far bias range settings )
vertexParm 3 512.0, 1, 2.5
fragmentProgram inkEffect.vfp
fragmentMap 0 _currentDepth
maskDepth
}
}

25
base/materials/video.mtr Normal file
View file

@ -0,0 +1,25 @@
// default video in PDA
video/default_pda_video {
translucent {
videomap "video/default_pda_video.roq"
linear
}
}
video/placeholder {
translucent {
map guis/assets/video_placeholder_material.tga
}
}
video/loadvideo {
translucent {
videomap video/loadvideo.RoQ
}
}
video/communication_stream {
translucent {
videomap video/loadvideo.RoQ
}
}