Imported Upstream version 0.26.0

This commit is contained in:
Bret Curtis 2013-10-17 16:37:22 +02:00
commit 9a2b6c69b6
1398 changed files with 212217 additions and 0 deletions

54
files/CMakeLists.txt Normal file
View file

@ -0,0 +1,54 @@
project(resources)
set(WATER_FILES
water_nm.png
circle.png
)
set(MATERIAL_FILES
atmosphere.shader
atmosphere.shaderset
clouds.shader
clouds.shaderset
core.h
moon.shader
moon.shaderset
objects.mat
objects.shader
objects.shaderset
openmw.configuration
quad.mat
quad.shader
quad.shaderset
shadowcaster.mat
shadowcaster.shader
shadowcaster.shaderset
shadows.h
sky.mat
stars.shader
stars.shaderset
sun.shader
sun.shaderset
terrain.shader
terrain.shaderset
underwater.h
water.mat
water.shader
water.shaderset
selection.mat
selection.shader
selection.shaderset
watersim_heightmap.shader
watersim_addimpulse.shader
watersim_heighttonormal.shader
watersim_common.h
watersim.mat
watersim.shaderset
mygui.mat
mygui.shader
mygui.shaderset
)
copy_all_files(${CMAKE_CURRENT_SOURCE_DIR}/water "${OpenMW_BINARY_DIR}/resources/water/" "${WATER_FILES}")
copy_all_files(${CMAKE_CURRENT_SOURCE_DIR}/materials "${OpenMW_BINARY_DIR}/resources/materials/" "${MATERIAL_FILES}")

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

View file

@ -0,0 +1,8 @@
[Icon Theme]
Name=Tango
Comment=Tango Theme
Inherits=default
Directories=16x16
[16x16]
Size=16

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

View file

@ -0,0 +1,21 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="images">
<file alias="clear.png">images/clear.png</file>
<file alias="down.png">images/down.png</file>
<file alias="openmw.png">images/openmw.png</file>
<file alias="openmw-plugin.png">images/openmw-plugin.png</file>
<file alias="openmw-header.png">images/openmw-header.png</file>
<file alias="playpage-background.png">images/playpage-background.png</file>
</qresource>
<qresource prefix="icons/tango">
<file alias="index.theme">icons/tango/index.theme</file>
<file alias="video-display.png">icons/tango/video-display.png</file>
<file alias="16x16/document-new.png">icons/tango/document-new.png</file>
<file alias="16x16/edit-copy.png">icons/tango/edit-copy.png</file>
<file alias="16x16/edit-delete.png">icons/tango/edit-delete.png</file>
<file alias="16x16/go-bottom.png">icons/tango/go-bottom.png</file>
<file alias="16x16/go-down.png">icons/tango/go-down.png</file>
<file alias="16x16/go-top.png">icons/tango/go-top.png</file>
<file alias="16x16/go-up.png">icons/tango/go-up.png</file>
</qresource>
</RCC>

View file

@ -0,0 +1 @@
IDI_ICON1 ICON DISCARDABLE "images/openmw.ico"

30
files/mac/Info.plist Normal file
View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIconFile</key>
<string>OpenMW.icns</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>omwlauncher</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string></string>
<key>CFBundleName</key>
<string>OpenMW</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${OPENMW_VERSION}</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>LSRequiresCarbon</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string></string>
</dict>
</plist>

BIN
files/mac/openmw.icns Normal file

Binary file not shown.

View file

@ -0,0 +1,39 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, view) @shAutoConstant(view, view_matrix)
shUniform(float4x4, projection) @shAutoConstant(projection, projection_matrix)
shOutput(float, alphaFade)
SH_START_PROGRAM
{
float4x4 viewFixed = view;
#if !SH_GLSL
viewFixed[0][3] = 0;
viewFixed[1][3] = 0;
viewFixed[2][3] = 0;
#else
viewFixed[3][0] = 0;
viewFixed[3][1] = 0;
viewFixed[3][2] = 0;
#endif
shOutputPosition = shMatrixMult(projection, shMatrixMult(viewFixed, shInputPosition));
alphaFade = shInputPosition.z < 150.0 ? 0.0 : 1.0;
}
#else
SH_BEGIN_PROGRAM
shInput(float, alphaFade)
shUniform(float4, atmosphereColour) @shSharedParameter(atmosphereColour)
shUniform(float4, horizonColour) @shSharedParameter(horizonColour, horizonColour)
SH_START_PROGRAM
{
shOutputColour(0) = alphaFade * atmosphereColour + (1.f - alphaFade) * horizonColour;
}
#endif

View file

@ -0,0 +1,15 @@
shader_set atmosphere_vertex
{
source atmosphere.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set atmosphere_fragment
{
source atmosphere.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

View file

@ -0,0 +1,53 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, view) @shAutoConstant(view, view_matrix)
shUniform(float4x4, projection) @shAutoConstant(projection, projection_matrix)
shVertexInput(float2, uv0)
shOutput(float2, UV)
shOutput(float, alphaFade)
SH_START_PROGRAM
{
float4x4 viewFixed = view;
#if !SH_GLSL
viewFixed[0][3] = 0;
viewFixed[1][3] = 0;
viewFixed[2][3] = 0;
#else
viewFixed[3][0] = 0;
viewFixed[3][1] = 0;
viewFixed[3][2] = 0;
#endif
shOutputPosition = shMatrixMult(projection, shMatrixMult(viewFixed, shInputPosition));
UV = uv0;
alphaFade = (shInputPosition.z <= 200.f) ? ((shInputPosition.z <= 100.f) ? 0.0 : 0.25) : 1.0;
}
#else
SH_BEGIN_PROGRAM
shInput(float2, UV)
shInput(float, alphaFade)
shSampler2D(diffuseMap1)
shSampler2D(diffuseMap2)
shUniform(float, cloudBlendFactor) @shSharedParameter(cloudBlendFactor)
shUniform(float, cloudAnimationTimer) @shSharedParameter(cloudAnimationTimer)
shUniform(float, cloudOpacity) @shSharedParameter(cloudOpacity)
shUniform(float3, cloudColour) @shSharedParameter(cloudColour)
SH_START_PROGRAM
{
// Scroll in y direction
float2 scrolledUV = UV + float2(0,1) * cloudAnimationTimer * 0.003;
float4 albedo = shSample(diffuseMap1, scrolledUV) * (1-cloudBlendFactor) + shSample(diffuseMap2, scrolledUV) * cloudBlendFactor;
shOutputColour(0) = float4(cloudColour, 1) * albedo * float4(1,1,1, cloudOpacity * alphaFade);
}
#endif

View file

@ -0,0 +1,15 @@
shader_set clouds_vertex
{
source clouds.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set clouds_fragment
{
source clouds.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

181
files/materials/core.h Normal file
View file

@ -0,0 +1,181 @@
#if SH_HLSL == 1 || SH_CG == 1
#define shTexture2D sampler2D
#define shSample(tex, coord) tex2D(tex, coord)
#define shCubicSample(tex, coord) texCUBE(tex, coord)
#define shLerp(a, b, t) lerp(a, b, t)
#define shSaturate(a) saturate(a)
#define shSampler2D(name) , uniform sampler2D name : register(s@shCounter(0)) @shUseSampler(name)
#define shSamplerCube(name) , uniform samplerCUBE name : register(s@shCounter(0)) @shUseSampler(name)
#define shMatrixMult(m, v) mul(m, v)
#define shUniform(type, name) , uniform type name
#define shTangentInput(type) , in type tangent : TANGENT
#define shVertexInput(type, name) , in type name : TEXCOORD@shCounter(1)
#define shInput(type, name) , in type name : TEXCOORD@shCounter(1)
#define shOutput(type, name) , out type name : TEXCOORD@shCounter(2)
#define shNormalInput(type) , in type normal : NORMAL
#define shColourInput(type) , in type colour : COLOR
#define shFract(val) frac(val)
#ifdef SH_VERTEX_SHADER
#define shOutputPosition oPosition
#define shInputPosition iPosition
#define SH_BEGIN_PROGRAM \
void main( \
float4 iPosition : POSITION \
, out float4 oPosition : POSITION
#define SH_START_PROGRAM \
) \
#endif
#ifdef SH_FRAGMENT_SHADER
#define shOutputColour(num) oColor##num
#define shDeclareMrtOutput(num) , out float4 oColor##num : COLOR##num
#define SH_BEGIN_PROGRAM \
void main( \
out float4 oColor0 : COLOR
#define SH_START_PROGRAM \
) \
#endif
#endif
#if SH_GLSL == 1 || SH_GLSLES == 1
#define shFract(val) fract(val)
#if SH_GLSLES == 1
@version 100
#else
@version 120
#endif
#if SH_GLSLES == 1 && SH_FRAGMENT_SHADER
precision mediump int;
precision mediump float;
#endif
#define float2 vec2
#define float3 vec3
#define float4 vec4
#define int2 ivec2
#define int3 ivec3
#define int4 ivec4
#define shTexture2D sampler2D
#define shSample(tex, coord) texture2D(tex, coord)
#define shCubicSample(tex, coord) textureCube(tex, coord)
#define shLerp(a, b, t) mix(a, b, t)
#define shSaturate(a) clamp(a, 0.0, 1.0)
#define shUniform(type, name) uniform type name;
#define shSampler2D(name) uniform sampler2D name; @shUseSampler(name)
#define shSamplerCube(name) uniform samplerCube name; @shUseSampler(name)
#define shMatrixMult(m, v) (m * v)
#define shOutputPosition gl_Position
#define float4x4 mat4
#define float3x3 mat3
// GLSL 1.3
#if 0
// automatically recognized by ogre when the input name equals this
#define shInputPosition vertex
#define shOutputColour(num) oColor##num
#define shTangentInput(type) in type tangent;
#define shVertexInput(type, name) in type name;
#define shInput(type, name) in type name;
#define shOutput(type, name) out type name;
// automatically recognized by ogre when the input name equals this
#define shNormalInput(type) in type normal;
#define shColourInput(type) in type colour;
#ifdef SH_VERTEX_SHADER
#define SH_BEGIN_PROGRAM \
in float4 vertex;
#define SH_START_PROGRAM \
void main(void)
#endif
#ifdef SH_FRAGMENT_SHADER
#define shDeclareMrtOutput(num) out vec4 oColor##num;
#define SH_BEGIN_PROGRAM \
out float4 oColor0;
#define SH_START_PROGRAM \
void main(void)
#endif
#endif
// GLSL 1.2
#if 1
// automatically recognized by ogre when the input name equals this
#define shInputPosition vertex
#define shOutputColour(num) gl_FragData[num]
#define shTangentInput(type) attribute type tangent;
#define shVertexInput(type, name) attribute type name;
#define shInput(type, name) varying type name;
#define shOutput(type, name) varying type name;
// automatically recognized by ogre when the input name equals this
#define shNormalInput(type) attribute type normal;
#define shColourInput(type) attribute type colour;
#ifdef SH_VERTEX_SHADER
#define SH_BEGIN_PROGRAM \
attribute vec4 vertex;
#define SH_START_PROGRAM \
void main(void)
#endif
#ifdef SH_FRAGMENT_SHADER
#define shDeclareMrtOutput(num)
#define SH_BEGIN_PROGRAM
#define SH_START_PROGRAM \
void main(void)
#endif
#endif
#endif

View file

@ -0,0 +1,53 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, world) @shAutoConstant(world, world_matrix)
shUniform(float4x4, view) @shAutoConstant(view, view_matrix)
shUniform(float4x4, projection) @shAutoConstant(projection, projection_matrix)
shVertexInput(float2, uv0)
shOutput(float2, UV)
SH_START_PROGRAM
{
float4x4 viewFixed = view;
#if !SH_GLSL
viewFixed[0][3] = 0;
viewFixed[1][3] = 0;
viewFixed[2][3] = 0;
#else
viewFixed[3][0] = 0;
viewFixed[3][1] = 0;
viewFixed[3][2] = 0;
#endif
shOutputPosition = shMatrixMult(projection, shMatrixMult(viewFixed, shMatrixMult(world, shInputPosition)));
UV = uv0;
}
#else
SH_BEGIN_PROGRAM
shSampler2D(diffuseMap)
shSampler2D(alphaMap)
shInput(float2, UV)
shUniform(float4, materialDiffuse) @shAutoConstant(materialDiffuse, surface_diffuse_colour)
shUniform(float4, materialEmissive) @shAutoConstant(materialEmissive, surface_emissive_colour)
shUniform(float4, atmosphereColour) @shSharedParameter(atmosphereColour)
SH_START_PROGRAM
{
float4 tex = shSample(diffuseMap, UV);
shOutputColour(0) = float4(materialEmissive.xyz, 1) * tex;
shOutputColour(0).a = shSample(alphaMap, UV).a * materialDiffuse.a;
shOutputColour(0).rgb += (1-tex.a) * shOutputColour(0).a * atmosphereColour.rgb; //fill dark side of moon with atmosphereColour
shOutputColour(0).rgb += (1-materialDiffuse.a) * atmosphereColour.rgb; //fade bump
}
#endif

View file

@ -0,0 +1,15 @@
shader_set moon_vertex
{
source moon.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set moon_fragment
{
source moon.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

25
files/materials/mygui.mat Normal file
View file

@ -0,0 +1,25 @@
material MyGUI/NoTexture
{
pass
{
vertex_program mygui_vertex
fragment_program mygui_fragment
shader_properties
{
has_texture false
}
}
}
material MyGUI/OneTexture
{
pass
{
vertex_program mygui_vertex
fragment_program mygui_fragment
shader_properties
{
has_texture true
}
}
}

View file

@ -0,0 +1,45 @@
#include "core.h"
#define TEXTURE @shPropertyBool(has_texture)
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
#if TEXTURE
shVertexInput(float2, uv0)
shOutput(float2, UV)
#endif
shColourInput(float4)
shOutput(float4, colourPassthrough)
SH_START_PROGRAM
{
shOutputPosition = float4(shInputPosition.xyz, 1.f);
#if TEXTURE
UV.xy = uv0;
#endif
colourPassthrough = colour;
}
#else
SH_BEGIN_PROGRAM
#if TEXTURE
shSampler2D(diffuseMap)
shInput(float2, UV)
#endif
shInput(float4, colourPassthrough)
SH_START_PROGRAM
{
#if TEXTURE
shOutputColour(0) = shSample(diffuseMap, UV.xy) * colourPassthrough;
#else
shOutputColour(0) = colourPassthrough;
#endif
}
#endif

View file

@ -0,0 +1,15 @@
shader_set mygui_vertex
{
source mygui.shader
type vertex
profiles_cg vs_2_0 vp40 arbvp1
profiles_hlsl vs_3_0 vs_2_0
}
shader_set mygui_fragment
{
source mygui.shader
type fragment
profiles_cg ps_3_0 ps_2_x ps_2_0 fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}

View file

@ -0,0 +1,98 @@
material openmw_objects_base
{
diffuse 1.0 1.0 1.0 1.0
specular 0 0 0 0
ambient 1.0 1.0 1.0
emissive 0.0 0.0 0.0
vertmode 0
diffuseMap black.png
normalMap
emissiveMap
use_emissive_map false
use_detail_map false
emissiveMapUVSet 0
detailMapUVSet 0
scene_blend default
depth_write default
depth_check default
alpha_rejection default
transparent_sorting default
polygon_mode default
pass
{
vertex_program openmw_objects_vertex
fragment_program openmw_objects_fragment
shader_properties
{
vertexcolor_mode $vertmode
normalMap $normalMap
emissiveMapUVSet $emissiveMapUVSet
detailMapUVSet $detailMapUVSet
emissiveMap $emissiveMap
detailMap $detailMap
}
diffuse $diffuse
specular $specular
ambient $ambient
emissive $emissive
scene_blend $scene_blend
alpha_rejection $alpha_rejection
depth_write $depth_write
depth_check $depth_check
transparent_sorting $transparent_sorting
polygon_mode $polygon_mode
texture_unit diffuseMap
{
direct_texture $diffuseMap
create_in_ffp true
tex_coord_set $emissiveMapUVSet
}
texture_unit normalMap
{
direct_texture $normalMap
// force automips here for now
num_mipmaps 4
}
texture_unit emissiveMap
{
create_in_ffp $use_emissive_map
colour_op add
direct_texture $emissiveMap
tex_coord_set $emissiveMapUVSet
}
texture_unit detailMap
{
create_in_ffp $use_detail_map
colour_op_ex modulate_x2 src_current src_texture
direct_texture $detailMap
tex_coord_set $detailMapUVSet
}
texture_unit shadowMap0
{
content_type shadow
tex_address_mode clamp
filtering none
}
texture_unit shadowMap1
{
content_type shadow
tex_address_mode clamp
filtering none
}
texture_unit shadowMap2
{
content_type shadow
tex_address_mode clamp
filtering none
}
}
}

View file

@ -0,0 +1,447 @@
#include "core.h"
#define FOG @shGlobalSettingBool(fog)
#define SHADOWS_PSSM @shGlobalSettingBool(shadows_pssm)
#define SHADOWS @shGlobalSettingBool(shadows)
#if SHADOWS || SHADOWS_PSSM
#include "shadows.h"
#endif
#if FOG || SHADOWS_PSSM
#define NEED_DEPTH
#endif
#define NORMAL_MAP @shPropertyHasValue(normalMap)
#define EMISSIVE_MAP @shPropertyHasValue(emissiveMap)
#define DETAIL_MAP @shPropertyHasValue(detailMap)
// right now we support 2 UV sets max. implementing them is tedious, and we're probably not going to need more
#define SECOND_UV_SET (@shPropertyString(emissiveMapUVSet) || @shPropertyString(detailMapUVSet))
// if normal mapping is enabled, we force pixel lighting
#define VERTEX_LIGHTING (!@shPropertyHasValue(normalMap))
#define UNDERWATER @shGlobalSettingBool(render_refraction)
#define VERTEXCOLOR_MODE @shPropertyString(vertexcolor_mode)
#define VIEWPROJ_FIX @shGlobalSettingBool(viewproj_fix)
#ifdef SH_VERTEX_SHADER
// ------------------------------------- VERTEX ---------------------------------------
SH_BEGIN_PROGRAM
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
shUniform(float4x4, textureMatrix0) @shAutoConstant(textureMatrix0, texture_matrix, 0)
#if (VIEWPROJ_FIX) || (SHADOWS)
shUniform(float4x4, worldMatrix) @shAutoConstant(worldMatrix, world_matrix)
#endif
#if VIEWPROJ_FIX
shUniform(float4, vpRow2Fix) @shSharedParameter(vpRow2Fix, vpRow2Fix)
shUniform(float4x4, vpMatrix) @shAutoConstant(vpMatrix, viewproj_matrix)
#endif
shVertexInput(float2, uv0)
#if SECOND_UV_SET
shVertexInput(float2, uv1)
#endif
shOutput(float4, UV)
shNormalInput(float4)
#if NORMAL_MAP
shTangentInput(float4)
shOutput(float3, tangentPassthrough)
#endif
#if !VERTEX_LIGHTING
shOutput(float3, normalPassthrough)
#endif
#ifdef NEED_DEPTH
shOutput(float, depthPassthrough)
#endif
shOutput(float3, objSpacePositionPassthrough)
#if VERTEXCOLOR_MODE != 0
shColourInput(float4)
#endif
#if VERTEXCOLOR_MODE != 0 && !VERTEX_LIGHTING
shOutput(float4, colourPassthrough)
#endif
#if VERTEX_LIGHTING
shUniform(float4, lightPosition[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightPosition, light_position_view_space_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightDiffuse[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightDiffuse, light_diffuse_colour_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightAttenuation[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightAttenuation, light_attenuation_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightAmbient) @shAutoConstant(lightAmbient, ambient_light_colour)
shUniform(float4x4, worldView) @shAutoConstant(worldView, worldview_matrix)
#if VERTEXCOLOR_MODE != 2
shUniform(float4, materialAmbient) @shAutoConstant(materialAmbient, surface_ambient_colour)
#endif
#if VERTEXCOLOR_MODE != 2
shUniform(float4, materialDiffuse) @shAutoConstant(materialDiffuse, surface_diffuse_colour)
#endif
#if VERTEXCOLOR_MODE != 1
shUniform(float4, materialEmissive) @shAutoConstant(materialEmissive, surface_emissive_colour)
#endif
#endif
#if SHADOWS
shOutput(float4, lightSpacePos0)
shUniform(float4x4, texViewProjMatrix0) @shAutoConstant(texViewProjMatrix0, texture_viewproj_matrix)
#endif
#if SHADOWS_PSSM
@shForeach(3)
shOutput(float4, lightSpacePos@shIterator)
shUniform(float4x4, texViewProjMatrix@shIterator) @shAutoConstant(texViewProjMatrix@shIterator, texture_viewproj_matrix, @shIterator)
@shEndForeach
#if !VIEWPROJ_FIX
shUniform(float4x4, worldMatrix) @shAutoConstant(worldMatrix, world_matrix)
#endif
#endif
#if VERTEX_LIGHTING
shOutput(float4, lightResult)
shOutput(float3, directionalResult)
#endif
SH_START_PROGRAM
{
shOutputPosition = shMatrixMult(wvp, shInputPosition);
UV.xy = shMatrixMult (textureMatrix0, float4(uv0,0,1)).xy;
#if SECOND_UV_SET
UV.zw = uv1;
#endif
#if NORMAL_MAP
tangentPassthrough = tangent.xyz;
#endif
#if !VERTEX_LIGHTING
normalPassthrough = normal.xyz;
#endif
#if VERTEXCOLOR_MODE != 0 && !VERTEX_LIGHTING
colourPassthrough = colour;
#endif
#ifdef NEED_DEPTH
#if VIEWPROJ_FIX
float4x4 vpFixed = vpMatrix;
#if !SH_GLSL
vpFixed[2] = vpRow2Fix;
#else
vpFixed[0][2] = vpRow2Fix.x;
vpFixed[1][2] = vpRow2Fix.y;
vpFixed[2][2] = vpRow2Fix.z;
vpFixed[3][2] = vpRow2Fix.w;
#endif
float4x4 fixedWVP = shMatrixMult(vpFixed, worldMatrix);
depthPassthrough = shMatrixMult(fixedWVP, shInputPosition).z;
#else
depthPassthrough = shOutputPosition.z;
#endif
#endif
objSpacePositionPassthrough = shInputPosition.xyz;
#if SHADOWS
lightSpacePos0 = shMatrixMult(texViewProjMatrix0, shMatrixMult(worldMatrix, shInputPosition));
#endif
#if SHADOWS_PSSM
float4 wPos = shMatrixMult(worldMatrix, shInputPosition);
@shForeach(3)
lightSpacePos@shIterator = shMatrixMult(texViewProjMatrix@shIterator, wPos);
@shEndForeach
#endif
#if VERTEX_LIGHTING
float3 viewPos = shMatrixMult(worldView, shInputPosition).xyz;
float3 viewNormal = normalize(shMatrixMult(worldView, float4(normal.xyz, 0)).xyz);
float3 lightDir;
float d;
lightResult = float4(0,0,0,1);
@shForeach(@shGlobalSettingString(num_lights))
lightDir = lightPosition[@shIterator].xyz - (viewPos * lightPosition[@shIterator].w);
d = length(lightDir);
lightDir = normalize(lightDir);
#if VERTEXCOLOR_MODE == 2
lightResult.xyz += colour.xyz * lightDiffuse[@shIterator].xyz
* shSaturate(1.0 / ((lightAttenuation[@shIterator].y) + (lightAttenuation[@shIterator].z * d) + (lightAttenuation[@shIterator].w * d * d)))
* max(dot(viewNormal.xyz, lightDir), 0);
#else
lightResult.xyz += materialDiffuse.xyz * lightDiffuse[@shIterator].xyz
* shSaturate(1.0 / ((lightAttenuation[@shIterator].y) + (lightAttenuation[@shIterator].z * d) + (lightAttenuation[@shIterator].w * d * d)))
* max(dot(viewNormal.xyz, lightDir), 0);
#endif
#if @shIterator == 0
directionalResult = lightResult.xyz;
#endif
@shEndForeach
#if VERTEXCOLOR_MODE == 2
lightResult.xyz += lightAmbient.xyz * colour.xyz + materialEmissive.xyz;
lightResult.a *= colour.a;
#endif
#if VERTEXCOLOR_MODE == 1
lightResult.xyz += lightAmbient.xyz * materialAmbient.xyz + colour.xyz;
#endif
#if VERTEXCOLOR_MODE == 0
lightResult.xyz += lightAmbient.xyz * materialAmbient.xyz + materialEmissive.xyz;
#endif
#if VERTEXCOLOR_MODE != 2
lightResult.a *= materialDiffuse.a;
#endif
#endif
}
#else
// ----------------------------------- FRAGMENT ------------------------------------------
#if UNDERWATER
#include "underwater.h"
#endif
SH_BEGIN_PROGRAM
shSampler2D(diffuseMap)
#if NORMAL_MAP
shSampler2D(normalMap)
#endif
#if EMISSIVE_MAP
shSampler2D(emissiveMap)
#endif
#if DETAIL_MAP
shSampler2D(detailMap)
#endif
shInput(float4, UV)
#if NORMAL_MAP
shInput(float3, tangentPassthrough)
#endif
#if !VERTEX_LIGHTING
shInput(float3, normalPassthrough)
#endif
#ifdef NEED_DEPTH
shInput(float, depthPassthrough)
#endif
shInput(float3, objSpacePositionPassthrough)
#if VERTEXCOLOR_MODE != 0 && !VERTEX_LIGHTING
shInput(float4, colourPassthrough)
#endif
#if FOG
shUniform(float3, fogColour) @shAutoConstant(fogColour, fog_colour)
shUniform(float4, fogParams) @shAutoConstant(fogParams, fog_params)
#endif
#if SHADOWS
shInput(float4, lightSpacePos0)
shSampler2D(shadowMap0)
shUniform(float2, invShadowmapSize0) @shAutoConstant(invShadowmapSize0, inverse_texture_size, 1)
#endif
#if SHADOWS_PSSM
@shForeach(3)
shInput(float4, lightSpacePos@shIterator)
shSampler2D(shadowMap@shIterator)
shUniform(float2, invShadowmapSize@shIterator) @shAutoConstant(invShadowmapSize@shIterator, inverse_texture_size, @shIterator(1))
@shEndForeach
shUniform(float3, pssmSplitPoints) @shSharedParameter(pssmSplitPoints)
#endif
#if SHADOWS || SHADOWS_PSSM
shUniform(float4, shadowFar_fadeStart) @shSharedParameter(shadowFar_fadeStart)
#endif
#if (UNDERWATER) || (FOG)
shUniform(float4x4, worldMatrix) @shAutoConstant(worldMatrix, world_matrix)
shUniform(float4, cameraPos) @shAutoConstant(cameraPos, camera_position)
#endif
#if UNDERWATER
shUniform(float, waterLevel) @shSharedParameter(waterLevel)
shUniform(float, waterEnabled) @shSharedParameter(waterEnabled)
#endif
#if VERTEX_LIGHTING
shInput(float4, lightResult)
shInput(float3, directionalResult)
#else
shUniform(float, lightCount) @shAutoConstant(lightCount, light_count)
shUniform(float4, lightPosition[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightPosition, light_position_view_space_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightDiffuse[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightDiffuse, light_diffuse_colour_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightAttenuation[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightAttenuation, light_attenuation_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightAmbient) @shAutoConstant(lightAmbient, ambient_light_colour)
shUniform(float4x4, worldView) @shAutoConstant(worldView, worldview_matrix)
#if VERTEXCOLOR_MODE != 2
shUniform(float4, materialAmbient) @shAutoConstant(materialAmbient, surface_ambient_colour)
#endif
#if VERTEXCOLOR_MODE != 2
shUniform(float4, materialDiffuse) @shAutoConstant(materialDiffuse, surface_diffuse_colour)
#endif
#if VERTEXCOLOR_MODE != 1
shUniform(float4, materialEmissive) @shAutoConstant(materialEmissive, surface_emissive_colour)
#endif
#endif
SH_START_PROGRAM
{
shOutputColour(0) = shSample(diffuseMap, UV.xy);
#if DETAIL_MAP
#if @shPropertyString(detailMapUVSet)
shOutputColour(0) *= shSample(detailMap, UV.zw)*2;
#else
shOutputColour(0) *= shSample(detailMap, UV.xy)*2;
#endif
#endif
#if NORMAL_MAP
float3 normal = normalPassthrough;
float3 binormal = cross(tangentPassthrough.xyz, normal.xyz);
float3x3 tbn = float3x3(tangentPassthrough.xyz, binormal, normal.xyz);
#if SH_GLSL
tbn = transpose(tbn);
#endif
float3 TSnormal = shSample(normalMap, UV.xy).xyz * 2 - 1;
normal = normalize (shMatrixMult( transpose(tbn), TSnormal ));
#endif
#if !VERTEX_LIGHTING
float3 viewPos = shMatrixMult(worldView, float4(objSpacePositionPassthrough,1)).xyz;
float3 viewNormal = normalize(shMatrixMult(worldView, float4(normal.xyz, 0)).xyz);
float3 lightDir;
float d;
float4 lightResult = float4(0,0,0,1);
@shForeach(@shGlobalSettingString(num_lights))
lightDir = lightPosition[@shIterator].xyz - (viewPos * lightPosition[@shIterator].w);
d = length(lightDir);
lightDir = normalize(lightDir);
#if VERTEXCOLOR_MODE == 2
lightResult.xyz += colourPassthrough.xyz * lightDiffuse[@shIterator].xyz
* shSaturate(1.0 / ((lightAttenuation[@shIterator].y) + (lightAttenuation[@shIterator].z * d) + (lightAttenuation[@shIterator].w * d * d)))
* max(dot(viewNormal.xyz, lightDir), 0);
#else
lightResult.xyz += materialDiffuse.xyz * lightDiffuse[@shIterator].xyz
* shSaturate(1.0 / ((lightAttenuation[@shIterator].y) + (lightAttenuation[@shIterator].z * d) + (lightAttenuation[@shIterator].w * d * d)))
* max(dot(viewNormal.xyz, lightDir), 0);
#endif
#if @shIterator == 0
float3 directionalResult = lightResult.xyz;
#endif
@shEndForeach
#if VERTEXCOLOR_MODE == 2
lightResult.xyz += lightAmbient.xyz * colourPassthrough.xyz + materialEmissive.xyz;
lightResult.a *= colourPassthrough.a;
#endif
#if VERTEXCOLOR_MODE == 1
lightResult.xyz += lightAmbient.xyz * materialAmbient.xyz + colourPassthrough.xyz;
#endif
#if VERTEXCOLOR_MODE == 0
lightResult.xyz += lightAmbient.xyz * materialAmbient.xyz + materialEmissive.xyz;
#endif
#if VERTEXCOLOR_MODE != 2
lightResult.a *= materialDiffuse.a;
#endif
#endif
// shadows only for the first (directional) light
#if SHADOWS
float shadow = depthShadowPCF (shadowMap0, lightSpacePos0, invShadowmapSize0);
#endif
#if SHADOWS_PSSM
float shadow = pssmDepthShadow (lightSpacePos0, invShadowmapSize0, shadowMap0, lightSpacePos1, invShadowmapSize1, shadowMap1, lightSpacePos2, invShadowmapSize2, shadowMap2, depthPassthrough, pssmSplitPoints);
#endif
#if SHADOWS || SHADOWS_PSSM
float fadeRange = shadowFar_fadeStart.x - shadowFar_fadeStart.y;
float fade = 1-((depthPassthrough - shadowFar_fadeStart.y) / fadeRange);
shadow = (depthPassthrough > shadowFar_fadeStart.x) ? 1.0 : ((depthPassthrough > shadowFar_fadeStart.y) ? 1.0-((1.0-shadow)*fade) : shadow);
#endif
#if !SHADOWS && !SHADOWS_PSSM
float shadow = 1.0;
#endif
#if (UNDERWATER) || (FOG)
float3 worldPos = shMatrixMult(worldMatrix, float4(objSpacePositionPassthrough,1)).xyz;
#endif
#if UNDERWATER
float3 waterEyePos = intercept(worldPos, cameraPos.xyz - worldPos, float3(0,0,1), waterLevel);
#endif
#if SHADOWS || SHADOWS_PSSM
shOutputColour(0) *= (lightResult - float4(directionalResult * (1.0-shadow),0));
#else
shOutputColour(0) *= lightResult;
#endif
#if FOG
float fogValue = shSaturate((depthPassthrough - fogParams.y) * fogParams.w);
#if UNDERWATER
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, UNDERWATER_COLOUR, shSaturate(length(waterEyePos-worldPos) / VISIBILITY));
#else
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, fogColour, fogValue);
#endif
#endif
#if EMISSIVE_MAP
#if @shPropertyString(emissiveMapUVSet)
shOutputColour(0).xyz += shSample(emissiveMap, UV.zw).xyz;
#else
shOutputColour(0).xyz += shSample(emissiveMap, UV.xy).xyz;
#endif
#endif
// prevent negative colour output (for example with negative lights)
shOutputColour(0).xyz = max(shOutputColour(0).xyz, float3(0,0,0));
}
#endif

View file

@ -0,0 +1,15 @@
shader_set openmw_objects_vertex
{
source objects.shader
type vertex
profiles_cg vs_2_0 vp40 arbvp1
profiles_hlsl vs_3_0 vs_2_0
}
shader_set openmw_objects_fragment
{
source objects.shader
type fragment
profiles_cg ps_3_0 ps_2_x ps_2_0 fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}

View file

@ -0,0 +1,20 @@
configuration water_reflection
{
shadows false
shadows_pssm false
viewproj_fix true
}
configuration water_refraction
{
viewproj_fix true
render_refraction true
}
configuration local_map
{
fog false
shadows false
shadows_pssm false
simple_water true
}

22
files/materials/quad.mat Normal file
View file

@ -0,0 +1,22 @@
material quad
{
depth_write on
pass
{
vertex_program transform_vertex
fragment_program quad_fragment
depth_write $depth_write
texture_unit SceneBuffer
{
}
}
}
material quad_noDepthWrite
{
parent quad
depth_write off
}

View file

@ -0,0 +1,25 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shVertexInput(float2, uv0)
shOutput(float2, UV)
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
SH_START_PROGRAM
{
shOutputPosition = shMatrixMult(wvp, shInputPosition);
UV = uv0;
}
#else
SH_BEGIN_PROGRAM
shInput(float2, UV)
shSampler2D(SceneBuffer)
SH_START_PROGRAM
{
shOutputColour(0) = shSample(SceneBuffer, UV);
}
#endif

View file

@ -0,0 +1,15 @@
shader_set transform_vertex
{
source quad.shader
type vertex
profiles_cg vs_2_0 vp40 arbvp1
profiles_hlsl vs_2_0
}
shader_set quad_fragment
{
source quad.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps fp40 arbfp1
profiles_hlsl ps_2_0
}

View file

@ -0,0 +1,9 @@
material SelectionColour
{
allow_fixed_function false
pass
{
vertex_program selection_vertex
fragment_program selection_fragment
}
}

View file

@ -0,0 +1,24 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
SH_START_PROGRAM
{
shOutputPosition = shMatrixMult(wvp, shInputPosition);
}
#else
SH_BEGIN_PROGRAM
shUniform(float4, colour) @shAutoConstant(colour, custom, 1)
SH_START_PROGRAM
{
shOutputColour(0) = colour;
//shOutputColour(0) = float4(1,0,0,1);
}
#endif

View file

@ -0,0 +1,15 @@
shader_set selection_vertex
{
source selection.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set selection_fragment
{
source selection.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

View file

@ -0,0 +1,35 @@
material openmw_shadowcaster_default
{
create_configuration Default
allow_fixed_function false
pass
{
fog_override true
vertex_program openmw_shadowcaster_vertex
fragment_program openmw_shadowcaster_fragment
shader_properties
{
shadow_transparency true
}
}
}
material openmw_shadowcaster_noalpha
{
create_configuration Default
allow_fixed_function false
pass
{
fog_override true
vertex_program openmw_shadowcaster_vertex
fragment_program openmw_shadowcaster_fragment
shader_properties
{
shadow_transparency false
}
}
}

View file

@ -0,0 +1,55 @@
#include "core.h"
#define ALPHA @shPropertyBool(shadow_transparency)
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
#if ALPHA
shVertexInput(float2, uv0)
shOutput(float2, UV)
#endif
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
shOutput(float2, depth)
SH_START_PROGRAM
{
// this is the view space position
shOutputPosition = shMatrixMult(wvp, shInputPosition);
// depth info for the fragment.
depth.x = shOutputPosition.z;
depth.y = shOutputPosition.w;
// clamp z to zero. seem to do the trick. :-/
shOutputPosition.z = max(shOutputPosition.z, 0);
#if ALPHA
UV = uv0;
#endif
}
#else
SH_BEGIN_PROGRAM
#if ALPHA
shInput(float2, UV)
shSampler2D(texture1)
#endif
shInput(float2, depth)
SH_START_PROGRAM
{
float finalDepth = depth.x / depth.y;
#if ALPHA
// use alpha channel of the first texture
float alpha = shSample(texture1, UV).a;
if (alpha < 0.5)
discard;
#endif
shOutputColour(0) = float4(finalDepth, finalDepth, finalDepth, 1);
}
#endif

View file

@ -0,0 +1,15 @@
shader_set openmw_shadowcaster_vertex
{
source shadowcaster.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set openmw_shadowcaster_fragment
{
source shadowcaster.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

51
files/materials/shadows.h Normal file
View file

@ -0,0 +1,51 @@
#define FIXED_BIAS 0.0003
float depthShadowPCF (shTexture2D shadowMap, float4 shadowMapPos, float2 offset)
{
shadowMapPos /= shadowMapPos.w;
float3 o = float3(offset.xy, -offset.x) * 0.3;
//float3 o = float3(0,0,0);
float c = (shadowMapPos.z <= FIXED_BIAS + shSample(shadowMap, shadowMapPos.xy - o.xy).r) ? 1 : 0; // top left
c += (shadowMapPos.z <= FIXED_BIAS + shSample(shadowMap, shadowMapPos.xy + o.xy).r) ? 1 : 0; // bottom right
c += (shadowMapPos.z <= FIXED_BIAS + shSample(shadowMap, shadowMapPos.xy + o.zy).r) ? 1 : 0; // bottom left
c += (shadowMapPos.z <= FIXED_BIAS + shSample(shadowMap, shadowMapPos.xy - o.zy).r) ? 1 : 0; // top right
return c / 4;
}
float pssmDepthShadow (
float4 lightSpacePos0,
float2 invShadowmapSize0,
shTexture2D shadowMap0,
float4 lightSpacePos1,
float2 invShadowmapSize1,
shTexture2D shadowMap1,
float4 lightSpacePos2,
float2 invShadowmapSize2,
shTexture2D shadowMap2,
float depth,
float3 pssmSplitPoints)
{
float shadow;
float pcf1 = depthShadowPCF(shadowMap0, lightSpacePos0, invShadowmapSize0);
float pcf2 = depthShadowPCF(shadowMap1, lightSpacePos1, invShadowmapSize1);
float pcf3 = depthShadowPCF(shadowMap2, lightSpacePos2, invShadowmapSize2);
if (depth < pssmSplitPoints.x)
shadow = pcf1;
else if (depth < pssmSplitPoints.y)
shadow = pcf2;
else
shadow = pcf3;
return shadow;
}

140
files/materials/sky.mat Normal file
View file

@ -0,0 +1,140 @@
material QueryTotalPixels
{
allow_fixed_function false
pass
{
vertex_program sun_vertex
fragment_program sun_fragment
cull_hardware none
polygon_mode_overrideable off
depth_check off
depth_write off
colour_write off
}
}
material QueryVisiblePixels
{
allow_fixed_function false
pass
{
vertex_program sun_vertex
fragment_program sun_fragment
cull_hardware none
cull_software none
polygon_mode_overrideable off
depth_check on
depth_write off
colour_write off
}
}
material openmw_moon
{
allow_fixed_function false
pass
{
vertex_program moon_vertex
fragment_program moon_fragment
cull_hardware none
polygon_mode_overrideable off
depth_write off
depth_check off
scene_blend alpha_blend
texture_unit diffuseMap
{
texture_alias $texture
}
texture_unit alphaMap
{
direct_texture textures\tx_secunda_full.dds
}
}
}
material openmw_clouds
{
allow_fixed_function false
pass
{
vertex_program clouds_vertex
fragment_program clouds_fragment
polygon_mode_overrideable off
scene_blend alpha_blend
depth_write off
// second diffuse map is used for weather transitions
texture_unit diffuseMap1
{
texture_alias cloud_texture_1
}
texture_unit diffuseMap2
{
texture_alias cloud_texture_2
}
}
}
material openmw_atmosphere
{
allow_fixed_function false
pass
{
vertex_program atmosphere_vertex
fragment_program atmosphere_fragment
polygon_mode_overrideable off
depth_write off
}
}
material openmw_stars
{
allow_fixed_function false
pass
{
vertex_program stars_vertex
fragment_program stars_fragment
polygon_mode_overrideable off
depth_check off
depth_write off
scene_blend alpha_blend
texture_unit diffuseMap
{
direct_texture $texture
}
}
}
// used for both sun and sun glare
material openmw_sun
{
allow_fixed_function false
pass
{
vertex_program sun_vertex
fragment_program sun_fragment
cull_hardware none
polygon_mode_overrideable off
depth_check off
depth_write off
scene_blend alpha_blend
texture_unit diffuseMap
{
direct_texture $texture
}
}
}

View file

@ -0,0 +1,47 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, view) @shAutoConstant(view, view_matrix)
shUniform(float4x4, projection) @shAutoConstant(projection, projection_matrix)
shVertexInput(float2, uv0)
shOutput(float2, UV)
shOutput(float, fade)
SH_START_PROGRAM
{
float4x4 viewFixed = view;
#if !SH_GLSL
viewFixed[0][3] = 0;
viewFixed[1][3] = 0;
viewFixed[2][3] = 0;
#else
viewFixed[3][0] = 0;
viewFixed[3][1] = 0;
viewFixed[3][2] = 0;
#endif
shOutputPosition = shMatrixMult(projection, shMatrixMult(viewFixed, shInputPosition));
UV = uv0;
fade = (shInputPosition.z > 50) ? 1 : 0;
}
#else
SH_BEGIN_PROGRAM
shInput(float2, UV)
shInput(float, fade)
shSampler2D(diffuseMap)
shUniform(float, nightFade) @shSharedParameter(nightFade)
SH_START_PROGRAM
{
shOutputColour(0) = shSample(diffuseMap, UV) * float4(1,1,1, nightFade * fade);
}
#endif

View file

@ -0,0 +1,15 @@
shader_set stars_vertex
{
source stars.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set stars_fragment
{
source stars.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

View file

@ -0,0 +1,41 @@
#include "core.h"
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, world) @shAutoConstant(world, world_matrix)
shUniform(float4x4, view) @shAutoConstant(view, view_matrix)
shUniform(float4x4, projection) @shAutoConstant(projection, projection_matrix)
shVertexInput(float2, uv0)
shOutput(float2, UV)
SH_START_PROGRAM
{
float4x4 viewFixed = view;
#if !SH_GLSL
viewFixed[0][3] = 0;
viewFixed[1][3] = 0;
viewFixed[2][3] = 0;
#else
viewFixed[3][0] = 0;
viewFixed[3][1] = 0;
viewFixed[3][2] = 0;
#endif
shOutputPosition = shMatrixMult(projection, shMatrixMult(viewFixed, shMatrixMult(world, shInputPosition)));
UV = uv0;
}
#else
SH_BEGIN_PROGRAM
shSampler2D(diffuseMap)
shInput(float2, UV)
shUniform(float4, materialDiffuse) @shAutoConstant(materialDiffuse, surface_diffuse_colour)
//shUniform(float4, materialEmissive) @shAutoConstant(materialEmissive, surface_emissive_colour)
SH_START_PROGRAM
{
shOutputColour(0) = float4(1,1,1,materialDiffuse.a) * shSample(diffuseMap, UV);
}
#endif

View file

@ -0,0 +1,15 @@
shader_set sun_vertex
{
source sun.shader
type vertex
profiles_cg vs_2_0 arbvp1
profiles_hlsl vs_2_0
}
shader_set sun_fragment
{
source sun.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps arbfp1
profiles_hlsl ps_2_0
}

View file

@ -0,0 +1,348 @@
#include "core.h"
#define IS_FIRST_PASS (@shPropertyString(pass_index) == 0)
#define FOG (@shGlobalSettingBool(fog) && !@shPropertyBool(render_composite_map))
#define SHADOWS_PSSM @shGlobalSettingBool(shadows_pssm)
#define SHADOWS @shGlobalSettingBool(shadows)
#if SHADOWS || SHADOWS_PSSM
#include "shadows.h"
#endif
#define NUM_LAYERS @shPropertyString(num_layers)
#if FOG || SHADOWS_PSSM
#define NEED_DEPTH 1
#endif
#define UNDERWATER @shGlobalSettingBool(render_refraction)
#define VIEWPROJ_FIX @shGlobalSettingBool(viewproj_fix)
#define RENDERCMP @shPropertyBool(render_composite_map)
#define LIGHTING !RENDERCMP
#define COMPOSITE_MAP @shPropertyBool(display_composite_map)
#if NEED_DEPTH
@shAllocatePassthrough(1, depth)
#endif
@shAllocatePassthrough(2, UV)
@shAllocatePassthrough(3, worldPos)
#if LIGHTING
@shAllocatePassthrough(3, lightResult)
@shAllocatePassthrough(3, directionalResult)
#if SHADOWS
@shAllocatePassthrough(4, lightSpacePos0)
#endif
#if SHADOWS_PSSM
@shForeach(3)
@shAllocatePassthrough(4, lightSpacePos@shIterator)
@shEndForeach
#endif
#endif
#ifdef SH_VERTEX_SHADER
// ------------------------------------- VERTEX ---------------------------------------
SH_BEGIN_PROGRAM
shUniform(float4x4, worldMatrix) @shAutoConstant(worldMatrix, world_matrix)
shUniform(float4x4, viewProjMatrix) @shAutoConstant(viewProjMatrix, viewproj_matrix)
#if VIEWPROJ_FIX
shUniform(float4, vpRow2Fix) @shSharedParameter(vpRow2Fix, vpRow2Fix)
#endif
shVertexInput(float2, uv0)
shVertexInput(float2, uv1) // lodDelta, lodThreshold
#if LIGHTING
shNormalInput(float4)
shColourInput(float4)
shUniform(float, lightCount) @shAutoConstant(lightCount, light_count)
shUniform(float4, lightPosition[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightPosition, light_position_object_space_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightDiffuse[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightDiffuse, light_diffuse_colour_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightAttenuation[@shGlobalSettingString(num_lights)]) @shAutoConstant(lightAttenuation, light_attenuation_array, @shGlobalSettingString(num_lights))
shUniform(float4, lightAmbient) @shAutoConstant(lightAmbient, ambient_light_colour)
#if SHADOWS
shUniform(float4x4, texViewProjMatrix0) @shAutoConstant(texViewProjMatrix0, texture_viewproj_matrix)
#endif
#if SHADOWS_PSSM
@shForeach(3)
shUniform(float4x4, texViewProjMatrix@shIterator) @shAutoConstant(texViewProjMatrix@shIterator, texture_viewproj_matrix, @shIterator)
@shEndForeach
#endif
#endif
@shPassthroughVertexOutputs
SH_START_PROGRAM
{
float4 worldPos = shMatrixMult(worldMatrix, shInputPosition);
shOutputPosition = shMatrixMult(viewProjMatrix, worldPos);
#if NEED_DEPTH
#if VIEWPROJ_FIX
float4x4 vpFixed = viewProjMatrix;
#if !SH_GLSL
vpFixed[2] = vpRow2Fix;
#else
vpFixed[0][2] = vpRow2Fix.x;
vpFixed[1][2] = vpRow2Fix.y;
vpFixed[2][2] = vpRow2Fix.z;
vpFixed[3][2] = vpRow2Fix.w;
#endif
float4x4 fixedWVP = shMatrixMult(vpFixed, worldMatrix);
float depth = shMatrixMult(fixedWVP, shInputPosition).z;
@shPassthroughAssign(depth, depth);
#else
@shPassthroughAssign(depth, shOutputPosition.z);
#endif
#endif
@shPassthroughAssign(UV, uv0);
@shPassthroughAssign(worldPos, worldPos.xyz);
#if LIGHTING
#if SHADOWS
float4 lightSpacePos = shMatrixMult(texViewProjMatrix0, shMatrixMult(worldMatrix, shInputPosition));
@shPassthroughAssign(lightSpacePos0, lightSpacePos);
#endif
#if SHADOWS_PSSM
float4 wPos = shMatrixMult(worldMatrix, shInputPosition);
float4 lightSpacePos;
@shForeach(3)
lightSpacePos = shMatrixMult(texViewProjMatrix@shIterator, wPos);
@shPassthroughAssign(lightSpacePos@shIterator, lightSpacePos);
@shEndForeach
#endif
// Lighting
float3 lightDir;
float d;
float3 lightResult = float3(0,0,0);
float3 directionalResult = float3(0,0,0);
@shForeach(@shGlobalSettingString(num_lights))
lightDir = lightPosition[@shIterator].xyz - (shInputPosition.xyz * lightPosition[@shIterator].w);
d = length(lightDir);
lightDir = normalize(lightDir);
lightResult.xyz += lightDiffuse[@shIterator].xyz
* shSaturate(1.0 / ((lightAttenuation[@shIterator].y) + (lightAttenuation[@shIterator].z * d) + (lightAttenuation[@shIterator].w * d * d)))
* max(dot(normal.xyz, lightDir), 0);
#if @shIterator == 0
directionalResult = lightResult.xyz;
#endif
@shEndForeach
lightResult.xyz += lightAmbient.xyz;
lightResult.xyz *= colour.xyz;
directionalResult.xyz *= colour.xyz;
@shPassthroughAssign(lightResult, lightResult);
@shPassthroughAssign(directionalResult, directionalResult);
#endif
}
#else
// ----------------------------------- FRAGMENT ------------------------------------------
#if UNDERWATER
#include "underwater.h"
#endif
SH_BEGIN_PROGRAM
#if COMPOSITE_MAP
shSampler2D(compositeMap)
#else
@shForeach(@shPropertyString(num_blendmaps))
shSampler2D(blendMap@shIterator)
@shEndForeach
@shForeach(@shPropertyString(num_layers))
shSampler2D(diffuseMap@shIterator)
@shEndForeach
#endif
#if FOG
shUniform(float3, fogColour) @shAutoConstant(fogColour, fog_colour)
shUniform(float4, fogParams) @shAutoConstant(fogParams, fog_params)
#endif
@shPassthroughFragmentInputs
#if LIGHTING
#if SHADOWS
shSampler2D(shadowMap0)
shUniform(float2, invShadowmapSize0) @shAutoConstant(invShadowmapSize0, inverse_texture_size, @shPropertyString(shadowtexture_offset))
#endif
#if SHADOWS_PSSM
@shForeach(3)
shSampler2D(shadowMap@shIterator)
shUniform(float2, invShadowmapSize@shIterator) @shAutoConstant(invShadowmapSize@shIterator, inverse_texture_size, @shIterator(@shPropertyString(shadowtexture_offset)))
@shEndForeach
shUniform(float3, pssmSplitPoints) @shSharedParameter(pssmSplitPoints)
#endif
#if SHADOWS || SHADOWS_PSSM
shUniform(float4, shadowFar_fadeStart) @shSharedParameter(shadowFar_fadeStart)
#endif
#endif
#if (UNDERWATER) || (FOG)
shUniform(float4x4, worldMatrix) @shAutoConstant(worldMatrix, world_matrix)
shUniform(float4, cameraPos) @shAutoConstant(cameraPos, camera_position)
#endif
#if UNDERWATER
shUniform(float, waterLevel) @shSharedParameter(waterLevel)
#endif
SH_START_PROGRAM
{
#if NEED_DEPTH
float depth = @shPassthroughReceive(depth);
#endif
float2 UV = @shPassthroughReceive(UV);
float3 worldPos = @shPassthroughReceive(worldPos);
#if UNDERWATER
float3 waterEyePos = intercept(worldPos, cameraPos.xyz - worldPos, float3(0,0,1), waterLevel);
#endif
#if !IS_FIRST_PASS
// Opacity the previous passes should have, i.e. 1 - (opacity of this pass)
float previousAlpha = 1.f;
#endif
shOutputColour(0) = float4(1,1,1,1);
#if COMPOSITE_MAP
shOutputColour(0).xyz = shSample(compositeMap, UV).xyz;
#else
// Layer calculations
// rescale UV to directly map edge vertices to texel centers - this is
// important to get correct blending at cell transitions
// TODO: parameterize texel size
float2 blendUV = (UV - 0.5) * (16.0 / (16.0+1.0)) + 0.5;
@shForeach(@shPropertyString(num_blendmaps))
float4 blendValues@shIterator = shSaturate(shSample(blendMap@shIterator, blendUV));
@shEndForeach
float3 albedo = float3(0,0,0);
float2 layerUV = UV * 16;
@shForeach(@shPropertyString(num_layers))
#if IS_FIRST_PASS
#if @shIterator == 0
// first layer of first pass is the base layer and doesn't need a blend map
albedo = shSample(diffuseMap0, layerUV).rgb;
#else
albedo = shLerp(albedo, shSample(diffuseMap@shIterator, layerUV).rgb, blendValues@shPropertyString(blendmap_component_@shIterator));
#endif
#else
#if @shIterator == 0
albedo = shSample(diffuseMap@shIterator, layerUV).rgb, blendValues@shPropertyString(blendmap_component_@shIterator);
#else
albedo = shLerp(albedo, shSample(diffuseMap@shIterator, layerUV).rgb, blendValues@shPropertyString(blendmap_component_@shIterator));
#endif
previousAlpha *= 1.f-blendValues@shPropertyString(blendmap_component_@shIterator);
#endif
@shEndForeach
shOutputColour(0).rgb *= albedo;
#endif
#if LIGHTING
// Lighting
float3 lightResult = @shPassthroughReceive(lightResult);
float3 directionalResult = @shPassthroughReceive(directionalResult);
// shadows only for the first (directional) light
#if SHADOWS
float4 lightSpacePos0 = @shPassthroughReceive(lightSpacePos0);
float shadow = depthShadowPCF (shadowMap0, lightSpacePos0, invShadowmapSize0);
#endif
#if SHADOWS_PSSM
@shForeach(3)
float4 lightSpacePos@shIterator = @shPassthroughReceive(lightSpacePos@shIterator);
@shEndForeach
float shadow = pssmDepthShadow (lightSpacePos0, invShadowmapSize0, shadowMap0, lightSpacePos1, invShadowmapSize1, shadowMap1, lightSpacePos2, invShadowmapSize2, shadowMap2, depth, pssmSplitPoints);
#endif
#if SHADOWS || SHADOWS_PSSM
float fadeRange = shadowFar_fadeStart.x - shadowFar_fadeStart.y;
float fade = 1-((depth - shadowFar_fadeStart.y) / fadeRange);
shadow = (depth > shadowFar_fadeStart.x) ? 1.0 : ((depth > shadowFar_fadeStart.y) ? 1.0-((1.0-shadow)*fade) : shadow);
#endif
#if !SHADOWS && !SHADOWS_PSSM
float shadow = 1.0;
#endif
shOutputColour(0).xyz *= (lightResult - directionalResult * (1.0-shadow));
#endif
#if FOG
float fogValue = shSaturate((depth - fogParams.y) * fogParams.w);
#if UNDERWATER
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, UNDERWATER_COLOUR, shSaturate(length(waterEyePos-worldPos) / VISIBILITY));
#else
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, fogColour, fogValue);
#endif
#endif
// prevent negative colour output (for example with negative lights)
shOutputColour(0).xyz = max(shOutputColour(0).xyz, float3(0,0,0));
#if IS_FIRST_PASS
shOutputColour(0).a = 1;
#else
shOutputColour(0).a = 1.f-previousAlpha;
#endif
}
#endif

View file

@ -0,0 +1,15 @@
shader_set terrain_vertex
{
source terrain.shader
type vertex
profiles_cg vs_2_0 vp40 arbvp1
profiles_hlsl vs_3_0 vs_2_0
}
shader_set terrain_fragment
{
source terrain.shader
type fragment
profiles_cg ps_3_0 ps_2_x ps_2_0 fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}

View file

@ -0,0 +1,121 @@
#define UNDERWATER_COLOUR float3(0.18039, 0.23137, 0.25490)
#define VISIBILITY 1000.0 // how far you can look through water
#define BIG_WAVES_X 0.3 // strength of big waves
#define BIG_WAVES_Y 0.3
#define MID_WAVES_X 0.3 // strength of middle sized waves
#define MID_WAVES_Y 0.15
#define SMALL_WAVES_X 0.15 // strength of small waves
#define SMALL_WAVES_Y 0.1
#define WAVE_CHOPPYNESS 0.15 // wave choppyness
#define WAVE_SCALE 0.01 // overall wave scale
#define ABBERATION 0.001 // chromatic abberation amount
#define SUN_EXT float3(0.45, 0.55, 0.68) //sunlight extinction
float3 intercept(float3 lineP,
float3 lineN,
float3 planeN,
float planeD)
{
float distance = (planeD - dot(planeN, lineP)) / dot(lineN, planeN);
return lineP + lineN * distance;
}
float3 perturb1(shTexture2D tex, float2 coords, float bend, float2 windDir, float windSpeed, float timer)
{
float2 nCoord = float2(0,0);
bend *= WAVE_CHOPPYNESS;
nCoord = coords * (WAVE_SCALE * 0.05) + windDir * timer * (windSpeed*0.04);
float3 normal0 = 2.0 * shSample(tex, nCoord + float2(-timer*0.015,-timer*0.05)).rgb - 1.0;
nCoord = coords * (WAVE_SCALE * 0.1) + windDir * timer * (windSpeed*0.08)-normal0.xy*bend;
float3 normal1 = 2.0 * shSample(tex, nCoord + float2(+timer*0.020,+timer*0.015)).rgb - 1.0;
nCoord = coords * (WAVE_SCALE * 0.25) + windDir * timer * (windSpeed*0.07)-normal1.xy*bend;
float3 normal2 = 2.0 * shSample(tex, nCoord + float2(-timer*0.04,-timer*0.03)).rgb - 1.0;
nCoord = coords * (WAVE_SCALE * 0.5) + windDir * timer * (windSpeed*0.09)-normal2.xy*bend;
float3 normal3 = 2.0 * shSample(tex, nCoord + float2(+timer*0.03,+timer*0.04)).rgb - 1.0;
nCoord = coords * (WAVE_SCALE* 1.0) + windDir * timer * (windSpeed*0.4)-normal3.xy*bend;
float3 normal4 = 2.0 * shSample(tex, nCoord + float2(-timer*0.2,+timer*0.1)).rgb - 1.0;
nCoord = coords * (WAVE_SCALE * 2.0) + windDir * timer * (windSpeed*0.7)-normal4.xy*bend;
float3 normal5 = 2.0 * shSample(tex, nCoord + float2(+timer*0.1,-timer*0.06)).rgb - 1.0;
float3 normal = normalize(normal0 * BIG_WAVES_X + normal1 * BIG_WAVES_Y +
normal2 * MID_WAVES_X + normal3 * MID_WAVES_Y +
normal4 * SMALL_WAVES_X + normal5 * SMALL_WAVES_Y);
return normal;
}
float3 perturb(shTexture2D tex, float2 coords, float bend, float2 windDir, float windSpeed, float timer)
{
bend *= WAVE_CHOPPYNESS;
float3 col = float3(0,0,0);
float2 nCoord = float2(0,0); //normal coords
nCoord = coords * (WAVE_SCALE * 0.025) + windDir * timer * (windSpeed*0.03);
col += shSample(tex,nCoord + float2(-timer*0.005,-timer*0.01)).rgb*0.20;
nCoord = coords * (WAVE_SCALE * 0.1) + windDir * timer * (windSpeed*0.05)-(col.xy/col.zz)*bend;
col += shSample(tex,nCoord + float2(+timer*0.01,+timer*0.005)).rgb*0.20;
nCoord = coords * (WAVE_SCALE * 0.2) + windDir * timer * (windSpeed*0.1)-(col.xy/col.zz)*bend;
col += shSample(tex,nCoord + float2(-timer*0.02,-timer*0.03)).rgb*0.20;
nCoord = coords * (WAVE_SCALE * 0.5) + windDir * timer * (windSpeed*0.2)-(col.xy/col.zz)*bend;
col += shSample(tex,nCoord + float2(+timer*0.03,+timer*0.02)).rgb*0.15;
nCoord = coords * (WAVE_SCALE* 0.8) + windDir * timer * (windSpeed*1.0)-(col.xy/col.zz)*bend;
col += shSample(tex, nCoord + float2(-timer*0.06,+timer*0.08)).rgb*0.15;
nCoord = coords * (WAVE_SCALE * 1.0) + windDir * timer * (windSpeed*1.3)-(col.xy/col.zz)*bend;
col += shSample(tex,nCoord + float2(+timer*0.08,-timer*0.06)).rgb*0.10;
return col;
}
float3 getCaustics (shTexture2D causticMap, float3 worldPos, float3 waterEyePos, float3 worldNormal, float3 lightDirectionWS0, float waterLevel, float waterTimer, float3 windDir_windSpeed)
{
float waterDepth = shSaturate((waterEyePos.z - worldPos.z) / 50.0);
float3 causticPos = intercept(worldPos.xyz, lightDirectionWS0.xyz, float3(0,0,1), waterLevel);
///\ todo clean this up
float causticdepth = length(causticPos-worldPos.xyz);
causticdepth = 1.0-shSaturate(causticdepth / VISIBILITY);
causticdepth = shSaturate(causticdepth);
// NOTE: the original shader calculated a tangent space basis here,
// but using only the world normal is cheaper and i couldn't see a visual difference
// also, if this effect gets moved to screen-space some day, it's unlikely to have tangent information
float3 causticNorm = worldNormal.xyz * perturb(causticMap, causticPos.xy, causticdepth, windDir_windSpeed.xy, windDir_windSpeed.z, waterTimer).xyz * 2 - 1;
causticNorm = float3(causticNorm.x, causticNorm.y, -causticNorm.z);
//float fresnel = pow(clamp(dot(LV,causticnorm),0.0,1.0),2.0);
float NdotL = max(dot(worldNormal.xyz, lightDirectionWS0.xyz),0.0);
float causticR = 1.0-perturb(causticMap, causticPos.xy, causticdepth, windDir_windSpeed.xy, windDir_windSpeed.z, waterTimer).z;
/// \todo sunFade
// float3 caustics = clamp(pow(float3(causticR)*5.5,float3(5.5*causticdepth)),0.0,1.0)*NdotL*sunFade*causticdepth;
float3 caustics = clamp(pow(float3(causticR,causticR,causticR)*5.5,float3(5.5*causticdepth,5.5*causticdepth,5.5*causticdepth)),0.0,1.0)*NdotL*causticdepth;
float causticG = 1.0-perturb(causticMap,causticPos.xy+(1.0-causticdepth)*ABBERATION, causticdepth, windDir_windSpeed.xy, windDir_windSpeed.z, waterTimer).z;
float causticB = 1.0-perturb(causticMap,causticPos.xy+(1.0-causticdepth)*ABBERATION*2.0, causticdepth, windDir_windSpeed.xy, windDir_windSpeed.z, waterTimer).z;
//caustics = shSaturate(pow(float3(causticR,causticG,causticB)*5.5,float3(5.5*causticdepth)))*NdotL*sunFade*causticdepth;
caustics = shSaturate(pow(float3(causticR,causticG,causticB)*5.5,float3(5.5*causticdepth,5.5*causticdepth,5.5*causticdepth)))*NdotL*causticdepth;
caustics *= 3;
// shore transition
caustics = shLerp (float3(1,1,1), caustics, waterDepth);
return caustics;
}

77
files/materials/water.mat Normal file
View file

@ -0,0 +1,77 @@
material Water
{
allow_fixed_function false
pass
{
emissive 1.0 1.0 1.0
ambient 0 0 0
diffuse 0 0 0 1
specular 0 0 0 32
vertex_program water_vertex
fragment_program water_fragment
cull_hardware none
scene_blend alpha_blend
depth_write off
texture_unit reflectionMap
{
texture_alias WaterReflection
tex_address_mode clamp
}
texture_unit refractionMap
{
direct_texture WaterRefraction
tex_address_mode clamp
}
texture_unit depthMap
{
texture_alias SceneDepth
tex_address_mode clamp
}
texture_unit normalMap
{
texture water_nm.png 5
}
texture_unit rippleNormalMap
{
direct_texture RippleNormal
tex_address_mode border
tex_border_colour 0.5 0.5 1.0
}
// for simple_water
texture_unit animatedTexture
{
create_in_ffp true
scale 0.1 0.1
alpha_op_ex source1 src_manual src_current 0.7
}
texture_unit shadowMap0
{
content_type shadow
tex_address_mode clamp
filtering none
}
texture_unit shadowMap1
{
content_type shadow
tex_address_mode clamp
filtering none
}
texture_unit shadowMap2
{
content_type shadow
tex_address_mode clamp
filtering none
}
}
}

View file

@ -0,0 +1,370 @@
#include "core.h"
#define SIMPLE_WATER @shGlobalSettingBool(simple_water)
#if SIMPLE_WATER
// --------------------------------------- SIMPLE WATER ---------------------------------------------------
#define FOG @shGlobalSettingBool(fog)
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
shVertexInput(float2, uv0)
shOutput(float2, UV)
#if FOG
shOutput(float, depth)
#endif
SH_START_PROGRAM
{
shOutputPosition = shMatrixMult(wvp, shInputPosition);
UV = uv0;
#if FOG
depth = shOutputPosition.z;
#endif
}
#else
SH_BEGIN_PROGRAM
shSampler2D(animatedTexture)
shInput(float2, UV)
shInput(float, depth)
shUniform(float3, fogColor) @shAutoConstant(fogColor, fog_colour)
shUniform(float4, fogParams) @shAutoConstant(fogParams, fog_params)
SH_START_PROGRAM
{
shOutputColour(0).xyz = shSample(animatedTexture, UV * 15).xyz * float3(1.0, 1.0, 1.0);
shOutputColour(0).w = 0.7;
#if FOG
float fogValue = shSaturate((depth - fogParams.y) * fogParams.w);
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, fogColor, fogValue);
#endif
}
#endif
#else
// Inspired by Blender GLSL Water by martinsh ( http://devlog-martinsh.blogspot.de/2012/07/waterundewater-shader-wip.html )
#define SHADOWS_PSSM @shGlobalSettingBool(shadows_pssm)
#define SHADOWS @shGlobalSettingBool(shadows)
#if SHADOWS || SHADOWS_PSSM
#include "shadows.h"
#endif
#define RIPPLES 1
#define REFRACTION @shGlobalSettingBool(refraction)
#ifdef SH_VERTEX_SHADER
SH_BEGIN_PROGRAM
shUniform(float4x4, wvp) @shAutoConstant(wvp, worldviewproj_matrix)
shVertexInput(float2, uv0)
shOutput(float2, UV)
shOutput(float3, screenCoordsPassthrough)
shOutput(float4, position)
shOutput(float, depthPassthrough)
#if SHADOWS
shOutput(float4, lightSpacePos0)
shUniform(float4x4, texViewProjMatrix0) @shAutoConstant(texViewProjMatrix0, texture_viewproj_matrix)
#endif
#if SHADOWS_PSSM
@shForeach(3)
shOutput(float4, lightSpacePos@shIterator)
shUniform(float4x4, texViewProjMatrix@shIterator) @shAutoConstant(texViewProjMatrix@shIterator, texture_viewproj_matrix, @shIterator)
@shEndForeach
#endif
#if SHADOWS || SHADOWS_PSSM
shUniform(float4x4, worldMatrix) @shAutoConstant(worldMatrix, world_matrix)
#endif
SH_START_PROGRAM
{
shOutputPosition = shMatrixMult(wvp, shInputPosition);
UV = uv0;
#if !SH_GLSL
float4x4 scalemat = float4x4( 0.5, 0, 0, 0.5,
0, -0.5, 0, 0.5,
0, 0, 0.5, 0.5,
0, 0, 0, 1 );
#else
mat4 scalemat = mat4(0.5, 0.0, 0.0, 0.0,
0.0, -0.5, 0.0, 0.0,
0.0, 0.0, 0.5, 0.0,
0.5, 0.5, 0.5, 1.0);
#endif
float4 texcoordProj = shMatrixMult(scalemat, shOutputPosition);
screenCoordsPassthrough = float3(texcoordProj.x, texcoordProj.y, texcoordProj.w);
position = shInputPosition;
depthPassthrough = shOutputPosition.z;
#if SHADOWS
lightSpacePos0 = shMatrixMult(texViewProjMatrix0, shMatrixMult(worldMatrix, shInputPosition));
#endif
#if SHADOWS_PSSM
float4 wPos = shMatrixMult(worldMatrix, shInputPosition);
@shForeach(3)
lightSpacePos@shIterator = shMatrixMult(texViewProjMatrix@shIterator, wPos);
@shEndForeach
#endif
}
#else
// tweakables ----------------------------------------------------
#define VISIBILITY 1500.0 // how far you can look through water
#define BIG_WAVES_X 0.3 // strength of big waves
#define BIG_WAVES_Y 0.3
#define MID_WAVES_X 0.3 // strength of middle sized waves
#define MID_WAVES_Y 0.15
#define SMALL_WAVES_X 0.15 // strength of small waves
#define SMALL_WAVES_Y 0.1
#define WAVE_CHOPPYNESS 0.15 // wave choppyness
#define WAVE_SCALE 75 // overall wave scale
#define BUMP 1.5 // overall water surface bumpiness
#define REFL_BUMP 0.08 // reflection distortion amount
#define REFR_BUMP 0.06 // refraction distortion amount
#define SCATTER_AMOUNT 0.3 // amount of sunlight scattering
#define SCATTER_COLOUR float3(0.0,1.0,0.95) // colour of sunlight scattering
#define SUN_EXT float3(0.45, 0.55, 0.68) //sunlight extinction
#define SPEC_HARDNESS 256 // specular highlights hardness
// ---------------------------------------------------------------
float fresnel_dielectric(float3 Incoming, float3 Normal, float eta)
{
/* compute fresnel reflectance without explicitly computing
the refracted direction */
float c = abs(dot(Incoming, Normal));
float g = eta * eta - 1.0 + c * c;
float result;
if(g > 0.0) {
g = sqrt(g);
float A =(g - c)/(g + c);
float B =(c *(g + c)- 1.0)/(c *(g - c)+ 1.0);
result = 0.5 * A * A *(1.0 + B * B);
}
else
result = 1.0; /* TIR (no refracted component) */
return result;
}
SH_BEGIN_PROGRAM
shInput(float2, UV)
shInput(float3, screenCoordsPassthrough)
shInput(float4, position)
shInput(float, depthPassthrough)
#if RIPPLES
shUniform(float3, rippleCenter) @shSharedParameter(rippleCenter, rippleCenter)
shUniform(float, rippleAreaLength) @shSharedParameter(rippleAreaLength, rippleAreaLength)
#endif
shUniform(float, far) @shAutoConstant(far, far_clip_distance)
shSampler2D(reflectionMap)
#if REFRACTION
shSampler2D(refractionMap)
#endif
shSampler2D(depthMap)
shSampler2D(normalMap)
#if RIPPLES
shSampler2D(rippleNormalMap)
shUniform(float4x4, wMat) @shAutoConstant(wMat, world_matrix)
#endif
shUniform(float3, windDir_windSpeed) @shSharedParameter(windDir_windSpeed)
#define WIND_SPEED windDir_windSpeed.z
#define WIND_DIR windDir_windSpeed.xy
shUniform(float, waterTimer) @shSharedParameter(waterTimer)
shUniform(float2, waterSunFade_sunHeight) @shSharedParameter(waterSunFade_sunHeight)
shUniform(float4, sunPosition) @shAutoConstant(sunPosition, light_position, 0)
shUniform(float4, sunSpecular) @shAutoConstant(sunSpecular, light_specular_colour, 0)
shUniform(float, renderTargetFlipping) @shAutoConstant(renderTargetFlipping, render_target_flipping)
shUniform(float3, fogColor) @shAutoConstant(fogColor, fog_colour)
shUniform(float4, fogParams) @shAutoConstant(fogParams, fog_params)
shUniform(float4, cameraPos) @shAutoConstant(cameraPos, camera_position_object_space)
#if SHADOWS
shInput(float4, lightSpacePos0)
shSampler2D(shadowMap0)
shUniform(float2, invShadowmapSize0) @shAutoConstant(invShadowmapSize0, inverse_texture_size, 1)
#endif
#if SHADOWS_PSSM
@shForeach(3)
shInput(float4, lightSpacePos@shIterator)
shSampler2D(shadowMap@shIterator)
shUniform(float2, invShadowmapSize@shIterator) @shAutoConstant(invShadowmapSize@shIterator, inverse_texture_size, @shIterator(1))
@shEndForeach
shUniform(float3, pssmSplitPoints) @shSharedParameter(pssmSplitPoints)
#endif
#if SHADOWS || SHADOWS_PSSM
shUniform(float4, shadowFar_fadeStart) @shSharedParameter(shadowFar_fadeStart)
#endif
SH_START_PROGRAM
{
#if SHADOWS
float shadow = depthShadowPCF (shadowMap0, lightSpacePos0, invShadowmapSize0);
#endif
#if SHADOWS_PSSM
float shadow = pssmDepthShadow (lightSpacePos0, invShadowmapSize0, shadowMap0, lightSpacePos1, invShadowmapSize1, shadowMap1, lightSpacePos2, invShadowmapSize2, shadowMap2, depthPassthrough, pssmSplitPoints);
#endif
#if SHADOWS || SHADOWS_PSSM
float fadeRange = shadowFar_fadeStart.x - shadowFar_fadeStart.y;
float fade = 1-((depthPassthrough - shadowFar_fadeStart.y) / fadeRange);
shadow = (depthPassthrough > shadowFar_fadeStart.x) ? 1.0 : ((depthPassthrough > shadowFar_fadeStart.y) ? 1.0-((1.0-shadow)*fade) : shadow);
#endif
#if !SHADOWS && !SHADOWS_PSSM
float shadow = 1.0;
#endif
float2 screenCoords = screenCoordsPassthrough.xy / screenCoordsPassthrough.z;
screenCoords.y = (1-shSaturate(renderTargetFlipping))+renderTargetFlipping*screenCoords.y;
float2 nCoord = float2(0,0);
nCoord = UV * (WAVE_SCALE * 0.05) + WIND_DIR * waterTimer * (WIND_SPEED*0.04);
float3 normal0 = 2.0 * shSample(normalMap, nCoord + float2(-waterTimer*0.015,-waterTimer*0.005)).rgb - 1.0;
nCoord = UV * (WAVE_SCALE * 0.1) + WIND_DIR * waterTimer * (WIND_SPEED*0.08)-(normal0.xy/normal0.zz)*WAVE_CHOPPYNESS;
float3 normal1 = 2.0 * shSample(normalMap, nCoord + float2(+waterTimer*0.020,+waterTimer*0.015)).rgb - 1.0;
nCoord = UV * (WAVE_SCALE * 0.25) + WIND_DIR * waterTimer * (WIND_SPEED*0.07)-(normal1.xy/normal1.zz)*WAVE_CHOPPYNESS;
float3 normal2 = 2.0 * shSample(normalMap, nCoord + float2(-waterTimer*0.04,-waterTimer*0.03)).rgb - 1.0;
nCoord = UV * (WAVE_SCALE * 0.5) + WIND_DIR * waterTimer * (WIND_SPEED*0.09)-(normal2.xy/normal2.z)*WAVE_CHOPPYNESS;
float3 normal3 = 2.0 * shSample(normalMap, nCoord + float2(+waterTimer*0.03,+waterTimer*0.04)).rgb - 1.0;
nCoord = UV * (WAVE_SCALE* 1.0) + WIND_DIR * waterTimer * (WIND_SPEED*0.4)-(normal3.xy/normal3.zz)*WAVE_CHOPPYNESS;
float3 normal4 = 2.0 * shSample(normalMap, nCoord + float2(-waterTimer*0.02,+waterTimer*0.1)).rgb - 1.0;
nCoord = UV * (WAVE_SCALE * 2.0) + WIND_DIR * waterTimer * (WIND_SPEED*0.7)-(normal4.xy/normal4.zz)*WAVE_CHOPPYNESS;
float3 normal5 = 2.0 * shSample(normalMap, nCoord + float2(+waterTimer*0.1,-waterTimer*0.06)).rgb - 1.0;
float3 normal = (normal0 * BIG_WAVES_X + normal1 * BIG_WAVES_Y +
normal2 * MID_WAVES_X + normal3 * MID_WAVES_Y +
normal4 * SMALL_WAVES_X + normal5 * SMALL_WAVES_Y);
float4 worldPosition = shMatrixMult(wMat, float4(position.xyz, 1));
float2 relPos = (worldPosition.xy - rippleCenter.xy) / rippleAreaLength + 0.5;
float3 normal_ripple = normalize(shSample(rippleNormalMap, relPos.xy).xyz * 2 - 1);
//normal = normalize(normal + normal_ripple);
normal = normalize(float3(normal.x * BUMP + normal_ripple.x, normal.y * BUMP + normal_ripple.y, normal.z));
normal = float3(normal.x, normal.y, -normal.z);
// normal for sunlight scattering
float3 lNormal = (normal0 * BIG_WAVES_X*0.5 + normal1 * BIG_WAVES_Y*0.5 +
normal2 * MID_WAVES_X*0.2 + normal3 * MID_WAVES_Y*0.2 +
normal4 * SMALL_WAVES_X*0.1 + normal5 * SMALL_WAVES_Y*0.1).xyz;
lNormal = normalize(float3(lNormal.x * BUMP, lNormal.y * BUMP, lNormal.z));
lNormal = float3(lNormal.x, lNormal.y, -lNormal.z);
float3 lVec = normalize(sunPosition.xyz);
float3 vVec = normalize(position.xyz - cameraPos.xyz);
float isUnderwater = (cameraPos.z > 0) ? 0.0 : 1.0;
// sunlight scattering
float3 pNormal = float3(0,0,1);
float3 lR = reflect(lVec, lNormal);
float3 llR = reflect(lVec, pNormal);
float s = shSaturate(dot(lR, vVec)*2.0-1.2);
float lightScatter = shadow * shSaturate(dot(-lVec,lNormal)*0.7+0.3) * s * SCATTER_AMOUNT * waterSunFade_sunHeight.x * shSaturate(1.0-exp(-waterSunFade_sunHeight.y));
float3 scatterColour = shLerp(float3(SCATTER_COLOUR)*float3(1.0,0.4,0.0), SCATTER_COLOUR, shSaturate(1.0-exp(-waterSunFade_sunHeight.y*SUN_EXT)));
// fresnel
float ior = (cameraPos.z>0)?(1.333/1.0):(1.0/1.333); //air to water; water to air
float fresnel = fresnel_dielectric(-vVec, normal, ior);
fresnel = shSaturate(fresnel);
// reflection
float3 reflection = shSample(reflectionMap, screenCoords+(normal.xy*REFL_BUMP)).rgb;
// refraction
float3 R = reflect(vVec, normal);
#if REFRACTION
float3 refraction = shSample(refractionMap, (screenCoords-(normal.xy*REFR_BUMP))*1.0).rgb;
// brighten up the refraction underwater
refraction = (cameraPos.z < 0) ? shSaturate(refraction * 1.5) : refraction;
#endif
// specular
float specular = pow(max(dot(R, lVec), 0.0),SPEC_HARDNESS) * shadow;
#if REFRACTION
shOutputColour(0).xyz = shLerp( shLerp(refraction, scatterColour, lightScatter), reflection, fresnel) + specular * sunSpecular.xyz;
#else
shOutputColour(0).xyz = shLerp(reflection, float3(0.18039, 0.23137, 0.25490), (1.0-fresnel)*0.5) + specular * sunSpecular.xyz;
#endif
// fog
float fogValue = shSaturate((depthPassthrough - fogParams.y) * fogParams.w);
shOutputColour(0).xyz = shLerp (shOutputColour(0).xyz, fogColor, fogValue);
#if REFRACTION
shOutputColour(0).w = 1;
#else
shOutputColour(0).w = shSaturate(fresnel*2 + specular);
#endif
}
#endif
#endif

View file

@ -0,0 +1,15 @@
shader_set water_vertex
{
source water.shader
type vertex
profiles_cg vs_2_0 vp40 arbvp1
profiles_hlsl vs_3_0 vs_2_0
}
shader_set water_fragment
{
source water.shader
type fragment
profiles_cg ps_2_x ps_2_0 ps fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}

View file

@ -0,0 +1,59 @@
material HeightmapSimulation
{
allow_fixed_function false
pass
{
depth_check off
depth_write off
vertex_program transform_vertex
fragment_program watersim_fragment
texture_unit heightPrevSampler
{
tex_address_mode border
tex_border_colour 0 0 0
texture_alias Heightmap0
}
texture_unit heightCurrentSampler
{
tex_address_mode border
tex_border_colour 0 0 0
texture_alias Heightmap1
}
}
}
material HeightToNormalMap
{
allow_fixed_function false
pass
{
depth_check off
depth_write off
vertex_program transform_vertex
fragment_program height_to_normal_fragment
texture_unit heightCurrentSampler
{
texture_alias Heightmap2
}
}
}
material AddImpulse
{
allow_fixed_function false
pass
{
depth_check off
depth_write off
scene_blend alpha_blend
vertex_program transform_vertex
fragment_program add_impulse_fragment
texture_unit alphaMap
{
texture circle.png
}
}
}

View file

@ -0,0 +1,31 @@
shader_set transform_vertex
{
source quad.shader
type vertex
profiles_cg vs_2_0 vp40 arbvp1
profiles_hlsl vs_2_0
}
shader_set watersim_fragment
{
source watersim_heightmap.shader
type fragment
profiles_cg ps_3_0 ps_2_x ps_2_0 fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}
shader_set height_to_normal_fragment
{
source watersim_heighttonormal.shader
type fragment
profiles_cg ps_3_0 ps_2_x ps_2_0 fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}
shader_set add_impulse_fragment
{
source watersim_addimpulse.shader
type fragment
profiles_cg ps_3_0 ps_2_x ps_2_0 fp40 arbfp1
profiles_hlsl ps_3_0 ps_2_0
}

View file

@ -0,0 +1,12 @@
#include "core.h"
#include "watersim_common.h"
SH_BEGIN_PROGRAM
shInput(float2, UV)
shSampler2D(alphaMap)
SH_START_PROGRAM
{
shOutputColour(0) = EncodeHeightmap(1.0);
shOutputColour(0).a = shSample (alphaMap, UV.xy).a;
}

View file

@ -0,0 +1,25 @@
float DecodeHeightmap(float4 heightmap)
{
float4 table = float4(1.0, -1.0, 0.0, 0.0);
return dot(heightmap, table);
}
float DecodeHeightmap(shTexture2D HeightmapSampler, float2 texcoord)
{
float4 heightmap = shSample(HeightmapSampler, texcoord);
return DecodeHeightmap(heightmap);
}
float4 EncodeHeightmap(float fHeight)
{
float h = fHeight;
float positive = fHeight > 0.0 ? fHeight : 0.0;
float negative = fHeight < 0.0 ? -fHeight : 0.0;
float4 color = float4(0,0,0,0);
color.r = positive;
color.g = negative;
return color;
}

View file

@ -0,0 +1,51 @@
#include "core.h"
#define DAMPING 0.95
#include "watersim_common.h"
SH_BEGIN_PROGRAM
shInput(float2, UV)
shSampler2D(heightPrevSampler)
shSampler2D(heightCurrentSampler)
shUniform(float3, previousFrameOffset) @shSharedParameter(previousFrameOffset, previousFrameOffset)
shUniform(float3, currentFrameOffset) @shSharedParameter(currentFrameOffset, currentFrameOffset)
shUniform(float4, rippleTextureSize) @shSharedParameter(rippleTextureSize, rippleTextureSize)
SH_START_PROGRAM
{
#if !SH_HLSL
const float3 offset[4] = float3[4](
float3(-1.0, 0.0, 0.25),
float3( 1.0, 0.0, 0.25),
float3( 0.0,-1.0, 0.25),
float3( 0.0, 1.0, 0.25)
);
#else
const float3 offset[4] = {
float3(-1.0, 0.0, 0.25),
float3( 1.0, 0.0, 0.25),
float3( 0.0,-1.0, 0.25),
float3( 0.0, 1.0, 0.25)
};
#endif
float fHeightPrev = DecodeHeightmap(heightPrevSampler, UV.xy + previousFrameOffset.xy + currentFrameOffset.xy);
float fNeighCurrent = 0;
for ( int i=0; i<4; i++ )
{
float2 vTexcoord = UV + currentFrameOffset.xy + offset[i].xy * rippleTextureSize.xy;
fNeighCurrent += (DecodeHeightmap(heightCurrentSampler, vTexcoord) * offset[i].z);
}
float fHeight = fNeighCurrent * 2.0 - fHeightPrev;
fHeight *= DAMPING;
shOutputColour(0) = EncodeHeightmap(fHeight);
}

View file

@ -0,0 +1,36 @@
#include "core.h"
#include "watersim_common.h"
SH_BEGIN_PROGRAM
shInput(float2, UV)
shSampler2D(heightCurrentSampler)
shUniform(float4, rippleTextureSize) @shSharedParameter(rippleTextureSize, rippleTextureSize)
SH_START_PROGRAM
{
#if !SH_HLSL
float2 offset[4] = float2[4] (
float2(-1.0, 0.0),
float2( 1.0, 0.0),
float2( 0.0,-1.0),
float2( 0.0, 1.0)
);
#else
float2 offset[4] = {
float2(-1.0, 0.0),
float2( 1.0, 0.0),
float2( 0.0,-1.0),
float2( 0.0, 1.0)
};
#endif
float fHeightL = DecodeHeightmap(heightCurrentSampler, UV.xy + offset[0]*rippleTextureSize.xy);
float fHeightR = DecodeHeightmap(heightCurrentSampler, UV.xy + offset[1]*rippleTextureSize.xy);
float fHeightT = DecodeHeightmap(heightCurrentSampler, UV.xy + offset[2]*rippleTextureSize.xy);
float fHeightB = DecodeHeightmap(heightCurrentSampler, UV.xy + offset[3]*rippleTextureSize.xy);
float3 n = float3(fHeightB - fHeightT, fHeightR - fHeightL, 1.0);
float3 normal = (n + 1.0) * 0.5;
shOutputColour(0) = float4(normal.rgb, 1.0);
}

View file

@ -0,0 +1,91 @@
# Copy resource files into the build directory
set(SDIR ${CMAKE_CURRENT_SOURCE_DIR})
set(DDIR ${OpenMW_BINARY_DIR}/resources/mygui)
set(MYGUI_FILES
bigbars.png
black.png
core.skin
core.xml
EBGaramond-Regular.ttf
Obliviontt.zip
openmw_alchemy_window.layout
openmw_book.layout
openmw_box.skin.xml
openmw_button.skin.xml
openmw_chargen_birth.layout
openmw_chargen_class_description.layout
openmw_chargen_class.layout
openmw_chargen_create_class.layout
openmw_chargen_generate_class_result.layout
openmw_chargen_race.layout
openmw_chargen_review.layout
openmw_chargen_select_attribute.layout
openmw_chargen_select_skill.layout
openmw_chargen_select_specialization.layout
openmw_confirmation_dialog.layout
openmw_console.layout
openmw_console.skin.xml
openmw_container_window.layout
openmw_count_window.layout
openmw_dialogue_window.layout
openmw_dialogue_window_skin.xml
openmw_edit.skin.xml
openmw_font.xml
openmw_hud_box.skin.xml
openmw_hud_energybar.skin.xml
openmw_hud.layout
openmw_infobox.layout
openmw_interactive_messagebox.layout
openmw_inventory_window.layout
openmw_journal.layout
openmw_journal_skin.xml
openmw_layers.xml
openmw_list.skin.xml
openmw_mainmenu.layout
openmw_mainmenu_skin.xml
openmw_map_window.layout
openmw_map_window_skin.xml
openmw_messagebox.layout
openmw_pointer.xml
openmw_progress.skin.xml
openmw_resources.xml
openmw_scroll.layout
openmw_scroll_skin.xml
openmw_settings_window.layout
openmw_settings.xml
openmw_spell_window.layout
openmw_stats_window.layout
openmw_text_input.layout
openmw_text.skin.xml
openmw_tooltips.layout
openmw_trade_window.layout
openmw_spell_buying_window.layout
openmw_windows.skin.xml
openmw_quickkeys_menu.layout
openmw_quickkeys_menu_assign.layout
openmw_itemselection_dialog.layout
openmw_magicselection_dialog.layout
openmw_spell_buying_window.layout
openmw_loading_screen.layout
openmw_levelup_dialog.layout
openmw_wait_dialog.layout
openmw_wait_dialog_progressbar.layout
openmw_spellcreation_dialog.layout
openmw_edit_effect.layout
openmw_enchanting_dialog.layout
openmw_trainingwindow.layout
openmw_travel_window.layout
openmw_persuasion_dialog.layout
openmw_merchantrepair.layout
openmw_repair.layout
openmw_companion_window.layout
smallbars.png
DejaVuLGCSansMono.ttf
markers.png
../launcher/images/openmw.png
)
copy_all_files(${CMAKE_CURRENT_SOURCE_DIR} ${DDIR} "${MYGUI_FILES}")

Binary file not shown.

Binary file not shown.

BIN
files/mygui/Obliviontt.zip Normal file

Binary file not shown.

BIN
files/mygui/bigbars.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

BIN
files/mygui/black.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

19
files/mygui/core.skin Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Skin">
<Skin name = "TextBox" size = "16 16">
<Property key="FontHeight" value = "16" />
<Property key="TextAlign" value = "ALIGN_DEFAULT" />
<Property key="TextColour" value = "0.7 0.7 0.7" />
<BasisSkin type="SimpleText" offset = "0 0 16 16" align = "ALIGN_STRETCH"/>
</Skin>
<Skin name = "ImageBox" size = "16 16">
<BasisSkin type="MainSkin" offset = "0 0 16 16"/>
</Skin>
<Skin name = "RotatingSkin" size = "16 16">
<BasisSkin type="RotatingSkin" offset="0 0 16 16" align="Stretch"/>
</Skin>
</MyGUI>

27
files/mygui/core.xml Normal file
View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI>
<MyGUI type="List">
<List file="core.skin" />
<List file="openmw_resources.xml" />
<List file="openmw_layers.xml" />
<List file="openmw_pointer.xml" />
<List file="openmw_font.xml" />
<List file="openmw_text.skin.xml" />
<List file="openmw_windows.skin.xml" />
<List file="openmw_button.skin.xml" />
<List file="openmw_list.skin.xml" />
<List file="openmw_edit.skin.xml" />
<List file="openmw_box.skin.xml" />
<List file="openmw_progress.skin.xml" />
<List file="openmw_hud_energybar.skin.xml" />
<List file="openmw_hud_box.skin.xml" />
<List file="openmw_mainmenu_skin.xml" />
<List file="openmw_console.skin.xml" />
<List file="openmw_journal_skin.xml" />
<List file="openmw_map_window_skin.xml" />
<List file="openmw_dialogue_window_skin.xml" />
<List file="openmw_scroll_skin.xml" />
<List file="openmw_settings.xml" />
</MyGUI>
</MyGUI>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI>
<MyGUI type="List">
<List file="core.skin"/>
<List file="openmw_resources.xml"/>
<List file="openmw_font.xml"/>
<List file="openmw_text.skin.xml"/>
<List file="openmw_windows.skin.xml"/>
<List file="openmw_button.skin.xml"/>
<List file="openmw_list.skin.xml"/>
<List file="openmw_edit.skin.xml"/>
<List file="openmw_box.skin.xml"/>
<List file="openmw_progress.skin.xml"/>
<List file="openmw_hud_energybar.skin.xml"/>
<List file="openmw_hud_box.skin.xml"/>
<List file="openmw_mainmenu_skin.xml"/>
<List file="openmw_console.skin.xml"/>
<List file="openmw_journal_skin.xml"/>
<List file="openmw_map_window_skin.xml"/>
<List file="openmw_dialogue_window_skin.xml"/>
<List file="openmw_scroll_skin.xml"/>
<List file="openmw_settings.xml"/>
</MyGUI>
</MyGUI>

BIN
files/mygui/markers.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Window_NoCaption" layer="Windows" position="0 0 588 444" name="_Main">
<Property key="MinSize" value="425 360"/>
<!-- Name -->
<Widget type="TextBox" skin="SandText" position="10 10 65 24">
<Property key="Caption" value="#{sName}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="EditBox" skin="MW_TextEdit" position="70 10 492 24" align="Top Left HStretch" name="NameEdit"/>
<!-- Apparatus -->
<Widget type="TextBox" skin="SandText" position="10 40 260 24">
<Property key="Caption" value="#{sApparatus}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="Widget" skin="" position="10 66 260 50">
<Widget type="Widget" skin="MW_Box" position="0 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Apparatus1"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="60 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Apparatus2"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="120 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Apparatus3"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="180 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Apparatus4"/>
</Widget>
</Widget>
<!-- Used Ingredients -->
<Widget type="TextBox" skin="SandText" position="10 120 260 24">
<Property key="Caption" value="#{sIngredients}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="Widget" skin="" position="10 146 260 50">
<Widget type="Widget" skin="MW_Box" position="0 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Ingredient1"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="60 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Ingredient2"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="120 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Ingredient3"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="180 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="Ingredient4"/>
</Widget>
</Widget>
<!-- Available Ingredients -->
<Widget type="ItemView" skin="MW_ItemView" position="10 206 552 158" name="ItemView" align="Left Top Stretch"/>
<!-- Created Effects -->
<Widget type="TextBox" skin="SandText" position="250 40 320 24">
<Property key="Caption" value="#{sCreatedEffects}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="250 66 312 130" align="Top Left HStretch">
<Widget type="Widget" skin="" position="4 4 316 122" name="CreatedEffects" align="HStretch"/>
</Widget>
<!-- Buttons -->
<Widget type="HBox" skin="" position="110 374 452 24" align="Bottom Right">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CreateButton">
<Property key="Caption" value="#{sCreate}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="" layer="Windows" align="Left|Top" position="0 0 565 390" name="_Main">
<Widget type="ImageBox" skin="ImageBox" position="-70 0 705 390" align="Top|Right" name="JImage">
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
<Widget type="Widget" position="70 0 565 390" align="Top|Right">
<Widget type="Widget" position="0 0 282 390">
<Widget type="ImageButton" skin="ImageBox" position="205 350 48 32" name="PrevPageBTN">
<Property key="ImageHighlighted" value="textures\tx_menubook_prev_over.dds"/>
<Property key="ImageNormal" value="textures\tx_menubook_prev_idle.dds"/>
<Property key="ImagePushed" value="textures\tx_menubook_prev_pressed.dds"/>
</Widget>
</Widget>
<Widget type="Widget" position="282 0 282 390">
<Widget type="ImageButton" skin="ImageBox" position="18 350 48 32" name="NextPageBTN">
<Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/>
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
<Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/>
</Widget>
</Widget>
<Widget type="ImageButton" skin="ImageBox" position="40 350 64 32" name="TakeButton">
<Property key="ImageHighlighted" value="textures\tx_menubook_take_over.dds"/>
<Property key="ImageNormal" value="textures\tx_menubook_take_idle.dds"/>
<Property key="ImagePushed" value="textures\tx_menubook_take_pressed.dds"/>
</Widget>
<Widget type="ImageButton" skin="ImageBox" position="460 350 48 32" name="CloseButton">
<Property key="ImageHighlighted" value="textures\tx_menubook_close_over.dds"/>
<Property key="ImageNormal" value="textures\tx_menubook_close_idle.dds"/>
<Property key="ImagePushed" value="textures\tx_menubook_close_pressed.dds"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="150 350 32 16" name="LeftPageNumber">
<Property key="TextColour" value="0 0 0"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="410 350 32 16" name="RightPageNumber">
<Property key="TextColour" value="0 0 0"/>
</Widget>
<Widget type="Widget" skin="" position="30 22 240 300" name="LeftPage"/>
<Widget type="Widget" skin="" position="300 22 240 300" name="RightPage"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file defines the box you see around many GUI elements, such
as around the sections of the stats window, or around popup info windows -->
<MyGUI type="Skin">
<!-- Box borders -->
<Skin name="IB_T" size="512 2" texture="textures\menu_thin_border_top.dds">
<BasisSkin type="TileRect" offset="0 0 512 2" align="HStretch">
<State name="normal" offset="0 0 512 2">
<Property key="TileSize" value="512 2"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="IB_B" size="512 2" texture="textures\menu_thin_border_bottom.dds">
<BasisSkin type="TileRect" offset="0 0 512 2" align="HStretch">
<State name="normal" offset="0 0 512 2">
<Property key="TileSize" value="512 2"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="IB_L" size="2 512" texture="textures\menu_thin_border_left.dds">
<BasisSkin type="TileRect" offset="0 0 2 512" align="VStretch">
<State name="normal" offset="0 0 2 512">
<Property key="TileSize" value="2 512"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="IB_R" size="2 512" texture="textures\menu_thin_border_right.dds">
<BasisSkin type="TileRect" offset="0 0 2 512" align="VStretch">
<State name="normal" offset="0 0 2 512">
<Property key="TileSize" value="2 512"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="IB_TL" size="2 2" texture="textures\menu_thin_border_top_left_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 2 2">
<State name="normal" offset="0 0 2 2"/>
</BasisSkin>
</Skin>
<Skin name="IB_TR" size="2 2" texture="textures\menu_thin_border_top_right_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 2 2">
<State name="normal" offset="0 0 2 2"/>
</BasisSkin>
</Skin>
<Skin name="IB_BL" size="2 2" texture="textures\menu_thin_border_bottom_left_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 2 2">
<State name="normal" offset="0 0 2 2"/>
</BasisSkin>
</Skin>
<Skin name="IB_BR" size="2 2" texture="textures\menu_thin_border_bottom_right_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 2 2">
<State name="normal" offset="0 0 2 2"/>
</BasisSkin>
</Skin>
<!-- Main box definition -->
<Skin name="MW_Box" size="516 516">
<Child type="Widget" skin="IB_T" offset="2 0 512 2" align="Top HStretch"/>
<Child type="Widget" skin="IB_B" offset="2 514 512 2" align="Bottom HStretch"/>
<Child type="Widget" skin="IB_L" offset="0 2 2 512" align="Left VStretch"/>
<Child type="Widget" skin="IB_R" offset="514 2 2 512" align="Right VStretch"/>
<Child type="Widget" skin="IB_TL" offset="0 0 2 2" align="Top Left"/>
<Child type="Widget" skin="IB_TR" offset="514 0 2 2" align="Top Right"/>
<Child type="Widget" skin="IB_BL" offset="0 514 2 2" align="Bottom Left"/>
<Child type="Widget" skin="IB_BR" offset="514 514 2 2" align="Bottom Right"/>
</Skin>
</MyGUI>

View file

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Skin">
<!-- Button graphics -->
<Skin name="BTN_Top" size="128 4" texture="textures\menu_button_frame_top.dds">
<BasisSkin type="TileRect" offset="0 0 128 4" align="HStretch">
<State name="normal" offset="0 0 128 4">
<Property key="TileSize" value="128 4"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="BTN_Bottom" size="128 4" texture="textures\menu_button_frame_bottom.dds">
<BasisSkin type="TileRect" offset="0 0 128 4" align="HStretch">
<State name="normal" offset="0 0 128 4">
<Property key="TileSize" value="128 4"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="BTN_Left" size="4 16" texture="textures\menu_button_frame_left.dds">
<BasisSkin type="TileRect" offset="0 0 4 16" align="VStretch">
<State name="normal" offset="0 0 4 16">
<Property key="TileSize" value="4 16"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="BTN_Right" size="4 16" texture="textures\menu_button_frame_right.dds">
<BasisSkin type="TileRect" offset="0 0 4 16" align="VStretch">
<State name="normal" offset="0 0 4 16">
<Property key="TileSize" value="4 16"/>
<Property key="TileH" value="true"/>
<Property key="TileV" value="true"/>
</State>
</BasisSkin>
</Skin>
<Skin name="BTN_TopLeft" size="4 4" texture="textures\menu_button_frame_top_left_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 4 4">
<State name="normal" offset="0 0 4 4"/>
</BasisSkin>
</Skin>
<Skin name="BTN_TopRight" size="4 4" texture="textures\menu_button_frame_top_right_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 4 4">
<State name="normal" offset="0 0 4 4"/>
</BasisSkin>
</Skin>
<Skin name="BTN_BottomLeft" size="4 4" texture="textures\menu_button_frame_bottom_left_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 4 4">
<State name="normal" offset="0 0 4 4"/>
</BasisSkin>
</Skin>
<Skin name="BTN_BottomRight" size="4 4" texture="textures\menu_button_frame_bottom_right_corner.dds">
<BasisSkin type="MainSkin" offset="0 0 4 4">
<State name="normal" offset="0 0 4 4"/>
</BasisSkin>
</Skin>
<!-- Button widget -->
<Skin name="MW_Button" size="136 24">
<Property key="FontName" value="Default"/>
<Property key="TextAlign" value="Center"/>
<Child type="Widget" skin="BTN_Left" offset="0 4 4 16" align="VStretch Left"/>
<Child type="Widget" skin="BTN_Right" offset="132 4 4 16" align="VStretch Right"/>
<Child type="Widget" skin="BTN_Top" offset="4 0 128 4" align="HStretch Top"/>
<Child type="Widget" skin="BTN_Bottom" offset="4 20 128 4" align="HStretch Bottom"/>
<Child type="Widget" skin="BTN_TopLeft" offset="0 0 4 4" align="Top Left"/>
<Child type="Widget" skin="BTN_TopRight" offset="132 0 4 4" align="Top Right"/>
<Child type="Widget" skin="BTN_BottomLeft" offset="0 20 4 4" align="Bottom Left"/>
<Child type="Widget" skin="BTN_BottomRight" offset="132 20 4 4" align="Bottom Right"/>
<BasisSkin type="SimpleText" offset="4 4 128 16" align="Stretch">
<State name="disabled" colour="0.6 0.56 0.45" shift="0"/>
<State name="normal" colour="0.75 0.6 0.35" shift="0"/>
<State name="highlighted" colour="0.85 0.76 0.60" shift="0"/>
<State name="pushed" colour="1 1 1" shift="0"/>
<State name="disabled_checked" colour="0.33 0.38 0.67" shift="0"/>
<State name="normal_checked" colour="0.33 0.38 0.67" shift="0"/>
<State name="highlighted_checked" colour="0.33 0.38 0.67" shift="0"/>
<State name="pushed_checked" colour="0.33 0.38 0.67" shift="0"/>
</BasisSkin>
</Skin>
</MyGUI>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 491 378" name="_Main">
<!-- Birthsign list -->
<Widget type="ListBox" skin="MW_List" position="8 8 196 137" name="BirthsignList"/>
<!-- Birthsign image -->
<Widget type="Widget" skin="MW_Box" position="212 8 263 137" align="Left Top">
<Widget type="ImageBox" skin="ImageBox" position="2 2 259 133" name="BirthsignImage" align="Left Top"/>
</Widget>
<!-- Spell list -->
<Widget type="Widget" skin="" position="8 160 465 178" align="Left Top" name="SpellArea"/>
<!-- Dialog buttons -->
<Widget type="HBox" position="0 338 475 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="BackButton">
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="OK"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 478 316" name="_Main">
<!-- Class list -->
<Widget type="ListBox" skin="MW_List" position="8 8 181 138" name="ClassList"/>
<!-- Class image -->
<Widget type="Widget" skin="MW_Box" position="197 8 265 138" align="Left Top">
<Widget type="ImageBox" skin="ImageBox" position="2 2 261 134" name="ClassImage" align="Left Top"/>
</Widget>
<!-- Specialization -->
<Widget type="Widget" skin="" position="15 156 484 178" align="Left Top">
<Widget type="TextBox" skin="HeaderText" position="0 0 162 18" name="SpecializationT" align="Left Top">
<Property key="Caption" value="#{sChooseClassMenu1}"/>
<Property key="TextAlign" value="Left Top"/>
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="TextToolTip"/>
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp1}"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 18 162 18" name="SpecializationName" align="Left Top">
<Property key="TextAlign" value="Left Top"/>
</Widget>
<!-- Favorite Attributes -->
<Widget type="TextBox" skin="HeaderText" position="0 41 162 18" name="FavoriteAttributesT" align="Left Top">
<Property key="Caption" value="#{sChooseClassMenu2}"/>
<Property key="TextAlign" value="Left Top"/>
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="TextToolTip"/>
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp2}"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatName" position="0 59 162 18" name="FavoriteAttribute0" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatName" position="0 77 162 18" name="FavoriteAttribute1" align="Left Top"/>
<!-- Major Skills -->
<Widget type="TextBox" skin="HeaderText" position="162 0 162 18" name="MajorSkillT" align="Left Top">
<Property key="TextAlign" value="Left Top"/>
<Property key="Caption" value="#{sChooseClassMenu3}"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatName" position="162 18 162 18" name="MajorSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="162 36 162 18" name="MajorSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="162 54 162 18" name="MajorSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="162 72 162 18" name="MajorSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="162 90 162 18" name="MajorSkill4" align="Left Top"/>
<!-- Minor Skills -->
<Widget type="TextBox" skin="HeaderText" position="325 0 162 18" name="MinorSkillT" align="Left Top">
<Property key="Caption" value="#{sChooseClassMenu4}"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatName" position="325 18 162 18" name="MinorSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="325 36 162 18" name="MinorSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="325 54 162 18" name="MinorSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="325 72 162 18" name="MinorSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatName" position="325 90 162 18" name="MinorSkill4" align="Left Top"/>
</Widget>
<!-- Dialog buttons -->
<Widget type="HBox" position="0 276 462 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="BackButton">
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 244 248" name="_Main">
<!-- Edit box -->
<Widget type="Widget" skin="MW_Box" position="8 8 220 192" align="Stretch" name="Client"/>
<Widget type="EditBox" skin="MW_TextBoxEdit" position="10 10 218 190" name="TextEdit" align="Left Top Stretch">
<Property key="MultiLine" value="true"/>
<Property key="VisibleVScroll" value="true"/>
<Property key="WordWrap" value="true"/>
</Widget>
<!-- Dialog buttons -->
<Widget type="AutoSizedButton" skin="MW_Button" position="171 208 57 24" name="OKButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="Enter"/>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 450 198" name="_Main">
<!-- Class name -->
<Widget type="TextBox" skin="ProgressText" position="8 8 48 23" name="LabelT" align="Left Top">
<Property key="Caption" value="#{sName}"/>
<Property key="TextAlign" value="Left VCenter"/>
</Widget>
<Widget type="EditBox" skin="MW_TextEdit" position="72 8 362 23" name="EditName" align="HStretch Top">
<Property key="Caption" value="#{sCustomClassName}"/>
</Widget>
<Widget type="Widget" skin="" position="8 38 480 110" align="Stretch">
<!-- Specialization -->
<Widget type="TextBox" skin="HeaderText" position="0 0 156 18" name="SpecializationT" align="Left Top">
<Property key="Caption" value="#{sChooseClassMenu1}"/>
<Property key="TextAlign" value="Left Top"/>
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="TextToolTip"/>
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp1}"/>
</Widget>
<Widget type="Button" skin="SandTextButton" position="0 18 156 18" name="SpecializationName" align="Left Top">
<Property key="TextAlign" value="Left Top"/>
</Widget>
<!-- Favorite Attributes -->
<Widget type="TextBox" skin="HeaderText" position="0 41 156 18" name="FavoriteAttributesT" align="Left Top">
<Property key="Caption" value="#{sChooseClassMenu2}"/>
<Property key="TextAlign" value="Left Top"/>
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="TextToolTip"/>
<UserString key="Caption_Text" value="#{sCreateClassMenuHelp2}"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameButton" position="0 59 156 18" name="FavoriteAttribute0" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButton" position="0 77 156 18" name="FavoriteAttribute1" align="Left Top"/>
<!-- Major Skills -->
<Widget type="TextBox" skin="HeaderText" position="156 0 158 18" name="MajorSkillT" align="Left Top">
<Property key="Caption" value="Major Skills:"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatNameButton" position="156 18 158 18" name="MajorSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="156 36 158 18" name="MajorSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="156 54 158 18" name="MajorSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="156 72 158 18" name="MajorSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="156 90 158 18" name="MajorSkill4" align="Left Top"/>
<!-- Minor Skills -->
<Widget type="TextBox" skin="HeaderText" position="314 0 140 18" name="MinorSkillT" align="Left Top">
<Property key="Caption" value="Minor Skills:"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatNameButton" position="314 18 140 18" name="MinorSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="314 36 140 18" name="MinorSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="314 54 140 18" name="MinorSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="314 72 140 18" name="MinorSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="314 90 140 18" name="MinorSkill4" align="Left Top"/>
</Widget>
<!-- Dialog buttons -->
<Widget type="HBox" position="0 158 434 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="DescriptionButton">
<Property key="Caption" value="#{sCreateClassMenu1}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="BackButton">
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 289 256" name="_Main">
<!-- Class image -->
<Widget type="Widget" skin="MW_Box" position="8 8 265 138" align="Left Top">
<Widget type="ImageBox" skin="ImageBox" position="2 2 261 134" name="ClassImage" align="Left Top"/>
</Widget>
<!-- Class text -->
<Widget type="EditBox" skin="SandText" position="8 152 265 40" name="ReflectT" align="Left Top">
<Property key="TextAlign" value="Top HCenter"/>
<Property key="MultiLine" value="true"/>
<Property key="WordWrap" value="true"/>
<Property key="Static" value="true"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="8 183 265 23" name="ClassName" align="Left Top">
<Property key="Caption" value="[Class]"/>
<Property key="TextAlign" value="Top HCenter"/>
</Widget>
<!-- Dialog buttons -->
<Widget type="HBox" position="0 216 273 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="BackButton">
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 588 433" name="_Main">
<!-- Appearance -->
<Widget type="TextBox" skin="HeaderText" position="8 16 241 18" name="AppearanceT" align="Left Top">
<Property key="Caption" value="Appearance"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="8 39 241 220">
<Widget type="ImageBox" skin="ImageBox" position="2 2 237 216" align="Stretch" name="PreviewImage"/>
</Widget>
<!-- Sliders -->
<!-- Rotation of head -->
<Widget type="MWScrollBar" skin="MW_HScroll" position="8 270 241 14" name="HeadRotate"/>
<!-- Gender choice -->
<Widget type="Widget" skin="MW_Box" position="8 298 15 14">
<Widget type="Button" skin="MW_ArrowLeft" position="3 2 10 10" align="Left VStretch" name="PrevGenderButton"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" position="25 294 205 18" name="GenderChoiceT"/>
<Widget type="Widget" skin="MW_Box" position="234 298 15 14">
<Widget type="Button" skin="MW_ArrowRight" position="1 2 10 10" align="Right VStretch" name="NextGenderButton"/>
</Widget>
<!-- Face choice -->
<Widget type="Widget" skin="MW_Box" position="8 320 15 14">
<Widget type="Button" skin="MW_ArrowLeft" position="3 2 10 10" align="Left VStretch" name="PrevFaceButton"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" position="25 316 205 18" name="FaceChoiceT"/>
<Widget type="Widget" skin="MW_Box" position="234 320 15 14">
<Widget type="Button" skin="MW_ArrowRight" position="1 2 10 10" align="Right VStretch" name="NextFaceButton"/>
</Widget>
<!-- Hair choice -->
<Widget type="Widget" skin="MW_Box" position="8 342 15 14">
<Widget type="Button" skin="MW_ArrowLeft" position="3 2 10 10" align="Left VStretch" name="PrevHairButton"/>
</Widget>
<Widget type="TextBox" skin="HeaderText" position="25 338 205 18" name="HairChoiceT"/>
<Widget type="Widget" skin="MW_Box" position="234 342 15 14">
<Widget type="Button" skin="MW_ArrowRight" position="1 2 10 10" align="Right VStretch" name="NextHairButton"/>
</Widget>
<!-- Race -->
<Widget type="TextBox" skin="HeaderText" position="261 16 132 18" name="RaceT" align="Left Top">
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="ListBox" skin="MW_List" position="264 39 132 161" name="RaceList">
</Widget>
<!-- Spell powers -->
<Widget type="TextBox" skin="HeaderText" position="261 210 132 18" name="SpellPowerT" align="Left Top">
<Property key="TextAlign" value="Left Top"/>
</Widget>
<!-- Spell power sub-widgets will be placed here, no skin to make it invisible -->
<Widget type="Widget" skin="" position="261 230 250 140" name="SpellPowerList"/>
<!-- Skill bonus -->
<Widget type="TextBox" skin="HeaderText" position="403 39 159 18" name="SkillsT" align="Left Top">
<Property key="TextAlign" value="Left Top"/>
</Widget>
<!-- Skill bonus sub-widgets will be placed here, no skin to make it invisible -->
<Widget type="Widget" skin="" position="403 59 159 360" name="SkillList"/>
<!-- Dialog buttons -->
<Widget type="HBox" position="0 393 572 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="471 397 53 23" name="BackButton">
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="532 397 42 23" name="OKButton">
<Property key="Caption" value="#{sOK]"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 520 428" name="_Main">
<!-- Player Name, Race, Class and Birthsign -->
<Widget type="Widget" skin="MW_Box" position="8 8 244 126">
<Widget type="Button" skin="MW_Button" position="8 8 64 23" name="NameButton">
<Property key="Caption" value="#{sName}"/>
</Widget>
<Widget type="Button" skin="MW_Button" position="8 37 56 23" name="RaceButton">
<Property key="Caption" value="#{sRace}"/>
</Widget>
<Widget type="Button" skin="MW_Button" position="8 66 56 23" name="ClassButton">
<Property key="Caption" value="#{sClass}"/>
</Widget>
<Widget type="Button" skin="MW_Button" position="8 95 54 23" name="SignButton">
<Property key="Caption" value="#{sBirthSign}"/>
</Widget>
<Widget type="TextBox" skin="SandTextRight" position="97 10 140 18" name="NameText"/>
<Widget type="TextBox" skin="SandTextRight" position="97 39 140 18" name="RaceText"/>
<Widget type="TextBox" skin="SandTextRight" position="97 68 140 18" name="ClassText"/>
<Widget type="TextBox" skin="SandTextRight" position="97 97 140 18" name="SignText"/>
</Widget>
<!-- Player Health, Magicka and Fatigue -->
<Widget type="Widget" skin="MW_Box" position="8 144 244 72">
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Red" position="8 8 228 18" name="Health">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="HealthToolTip"/>
<UserString key="ImageTexture_HealthImage" value="icons\k\health.dds"/>
<Property key="Caption" value="#{sHealth}"/>
</Widget>
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Blue" position="8 27 228 18" name="Magicka">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="HealthToolTip"/>
<UserString key="ImageTexture_HealthImage" value="icons\k\magicka.dds"/>
<Property key="Caption" value="#{sMagic}"/>
</Widget>
<Widget type="MWDynamicStat" skin="MW_DynamicStat_Green" position="8 46 228 18" name="Fatigue">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="HealthToolTip"/>
<UserString key="ImageTexture_HealthImage" value="icons\k\fatigue.dds"/>
<Property key="Caption" value="#{sFatigue}"/>
</Widget>
</Widget>
<!-- Player attributes -->
<Widget type="Widget" skin="MW_Box" position="8 224 244 156">
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 4 229 18" name="Attribute0">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeStrength}"/>
<UserString key="Caption_AttributeDescription" value="#{sStrDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_strength.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 22 229 18" name="Attribute1">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeIntelligence}"/>
<UserString key="Caption_AttributeDescription" value="#{sIntDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_int.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 40 229 18" name="Attribute2">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeWillpower}"/>
<UserString key="Caption_AttributeDescription" value="#{sWilDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_wilpower.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 58 229 18" name="Attribute3">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeAgility}"/>
<UserString key="Caption_AttributeDescription" value="#{sAgiDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_agility.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 76 229 18" name="Attribute4">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeSpeed}"/>
<UserString key="Caption_AttributeDescription" value="#{sSpdDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_speed.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 94 229 18" name="Attribute5">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeEndurance}"/>
<UserString key="Caption_AttributeDescription" value="#{sEndDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_endurance.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 112 229 18" name="Attribute6">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributePersonality}"/>
<UserString key="Caption_AttributeDescription" value="#{sPerDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_personality.dds"/>
</Widget>
<Widget type="MWAttribute" skin="MW_StatNameValue" position="8 130 229 18" name="Attribute7">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="AttributeToolTip"/>
<UserString key="Caption_AttributeName" value="#{sAttributeLuck}"/>
<UserString key="Caption_AttributeDescription" value="#{sLucDesc}"/>
<UserString key="ImageTexture_AttributeImage" value="icons\k\attribute_luck.dds"/>
</Widget>
</Widget>
<!-- Player Skills -->
<Widget type="Widget" skin="MW_Box" position="260 7 244 372" align="Left VStretch" name="Skills">
<Widget type="ScrollView" skin="MW_ScrollView" position="8 6 232 362" align="Stretch" name="SkillView"/>
</Widget>
<!-- Dialogue Buttons -->
<Widget type="HBox" position="0 388 504 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="BackButton">
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 217 234" name="_Main">
<Widget type="Widget" skin="" position="14 14 186 203" align="Stretch">
<!-- Label -->
<Widget type="TextBox" skin="HeaderText" position="0 0 186 18" name="LabelT" align="Left Top">
<Property key="Caption" value="Choose a Specialization"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<!-- Attribute list -->
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 28 186 18" name="Attribute0" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 46 186 18" name="Attribute1" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 64 186 18" name="Attribute2" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 82 186 18" name="Attribute3" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 100 186 18" name="Attribute4" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 118 186 18" name="Attribute5" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 136 186 18" name="Attribute6" align="Left Top"/>
<Widget type="MWAttribute" skin="MW_StatNameButtonC" position="0 154 186 18" name="Attribute7" align="Left Top"/>
<!-- Dialog buttons -->
<Widget type="AutoSizedButton" skin="MW_Button" position="120 180 66 21" name="CancelButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="Cancel"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 477 270" name="_Main">
<Widget type="Widget" skin="" position="17 14 447 239" align="Stretch">
<!-- Label -->
<Widget type="TextBox" skin="HeaderText" position="0 0 447 18" name="LabelT" align="HCenter Top">
<Property key="Caption" value="Choose a Skill"/>
<Property key="TextAlign" value="HCenter Top"/>
</Widget>
<!-- Combat list -->
<Widget type="TextBox" skin="HeaderText" position="0 32 154 18" name="CombatLabelT" align="Left Top">
<Property key="Caption" value="Combat"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 50 154 18" name="CombatSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 68 154 18" name="CombatSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 86 154 18" name="CombatSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 104 154 18" name="CombatSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 122 154 18" name="CombatSkill4" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 140 154 18" name="CombatSkill5" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 158 154 18" name="CombatSkill6" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 176 154 18" name="CombatSkill7" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="0 194 154 18" name="CombatSkill8" align="Left Top"/>
<!-- Magic list -->
<Widget type="TextBox" skin="HeaderText" position="158 32 154 18" name="MagicLabelT" align="Left Top">
<Property key="Caption" value="Magic"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 50 154 18" name="MagicSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 68 154 18" name="MagicSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 86 154 18" name="MagicSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 104 154 18" name="MagicSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 122 154 18" name="MagicSkill4" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 140 154 18" name="MagicSkill5" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 158 154 18" name="MagicSkill6" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 176 154 18" name="MagicSkill7" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="158 194 154 18" name="MagicSkill8" align="Left Top"/>
<!-- Stealth list -->
<Widget type="TextBox" skin="HeaderText" position="316 32 131 18" name="StealthLabelT" align="Left Top">
<Property key="Caption" value="Stealth"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 50 131 18" name="StealthSkill0" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 68 131 18" name="StealthSkill1" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 86 131 18" name="StealthSkill2" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 104 131 18" name="StealthSkill3" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 122 131 18" name="StealthSkill4" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 140 131 18" name="StealthSkill5" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 158 131 18" name="StealthSkill6" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 176 131 18" name="StealthSkill7" align="Left Top"/>
<Widget type="MWSkill" skin="MW_StatNameButton" position="316 194 131 18" name="StealthSkill8" align="Left Top"/>
<!-- Dialog buttons -->
<Widget type="AutoSizedButton" skin="MW_Button" position="381 218 66 21" name="CancelButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="Cancel"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<!-- correct size is 247 144, adjust when skin is changed to a dialog -->
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 247 144" name="_Main">
<Widget type="Widget" skin="" position="14 14 216 113" align="Stretch">
<!-- Label -->
<Widget type="TextBox" skin="HeaderText" position="0 0 216 18" name="LabelT" align="Left Top">
<Property key="Caption" value="Choose a Specialization"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<!-- Specialization list -->
<Widget type="Button" skin="SandTextButton" position="0 28 216 18" name="Specialization0" align="Left Top">
<Property key="TextAlign" value="Top HCenter"/>
</Widget>
<Widget type="Button" skin="SandTextButton" position="0 46 216 18" name="Specialization1" align="Left Top">
<Property key="TextAlign" value="Top HCenter"/>
</Widget>
<Widget type="Button" skin="SandTextButton" position="0 64 216 18" name="Specialization2" align="Left Top">
<Property key="TextAlign" value="Top HCenter"/>
</Widget>
<!-- Dialog buttons -->
<Widget type="AutoSizedButton" skin="MW_Button" position="150 90 66 21" name="CancelButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="Cancel"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Window" layer="Windows" position="0 0 600 300" name="_Main">
<Property key="MinSize" value="245 145"/>
<!-- Items -->
<Widget type="ItemView" skin="MW_ItemView" position="5 5 575 225" name="ItemView" align="Left Top Stretch">
</Widget>
<Widget type="HBox" position="5 235 575 24" align="Bottom HStretch">
<Widget type="MWDynamicStat" skin="MW_ChargeBar_Blue" position="8 8 212 24" name="EncumbranceBar" align="Left Top HStretch">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedTextBox" skin="SandText" name="ProfitLabel">
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CloseButton">
<Property key="Caption" value="#{sClose}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 300 130" name="_Main">
<Property key="Visible" value="false"/>
<Widget type="EditBox" skin="MW_TextEditClient" position="8 8 284 400" name="Message" align="Left Top Stretch">
<Property key="FontName" value="Default"/>
<Property key="TextAlign" value="Top HCenter"/>
<Property key="TextColour" value="0.75 0.6 0.35"/>
<Property key="Static" value="true"/>
<Property key="WordWrap" value="true"/>
<Property key="MultiLine" value="true"/>
</Widget>
<Widget type="HBox" position="0 89 272 24" align="Right Bottom">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton" align="Right Bottom">
<Property key="Caption" value="#{sCancel}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OkButton" align="Right Bottom">
<Property key="Caption" value="#{sOk}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Window" position="0 0 400 400" layer="Console" name="_Main">
<Property key="Caption" value="#{sConsoleTitle}"/>
<Property key="MinSize" value="400 245"/>
<Property key="MaxSize" value="2000 2000"/>
<Property key="Visible" value="false"/>
<!-- Log window -->
<Widget type="EditBox" skin="MW_ConsoleLog" position="5 5 380 328" align="Stretch" name="list_History">
<Property key="MultiLine" value="1"/>
</Widget>
<!-- Command line -->
<Widget type="EditBox" skin="MW_ConsoleCommand" position="0 338 384 28" align="HStretch Bottom" name="edit_Command"/>
</Widget>
</MyGUI>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Skin">
<!-- Console Output -->
<Skin name="MW_LogClient" size="10 10">
<Property key="FontName" value="MonoFont"/>
<Property key="TextAlign" value="Left Top"/>
<Property key="TextColour" value="1 1 1"/>
<BasisSkin type="EditText" offset="0 0 10 10" align="Stretch"/>
</Skin>
<Skin name="MW_ConsoleLog" size="0 0 50 50">
<Property key="WordWrap" value="true"/>
<Child type="TextBox" skin="MW_LogClient" offset="0 0 35 10" align="Stretch" name="Client"/>
</Skin>
<!-- Console Input -->
<Skin name="MW_EditClient" size="10 10">
<Property key="FontName" value="MonoFont"/>
<Property key="TextAlign" value="Left VCenter"/>
<Property key="TextColour" value="1 1 1"/>
<BasisSkin type="EditText" offset="0 0 10 10" align="Stretch"/>
</Skin>
<Skin name="MW_ConsoleCommand" size="29 28">
<Child type="TextBox" skin="MW_EditClient" offset="4 2 19 22" align="Bottom Stretch" name="Client"/>
<Child type="Widget" skin="MW_Box" offset="0 0 29 26" align="Bottom Stretch"/>
</Skin>
</MyGUI>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Window" layer="Windows" position="0 0 600 300" name="_Main">
<Property key="MinSize" value="245 145"/>
<!-- Items -->
<Widget type="ItemView" skin="MW_ItemView" position="5 5 575 225" name="ItemView" align="Left Top Stretch">
</Widget>
<Widget type="HBox" position="0 235 580 24" align="Right Bottom">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="DisposeCorpseButton" align="Right Bottom">
<Property key="Caption" value="#{sDisposeofCorpse}"/>
<Property key="Visible" value="false"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="TakeButton" align="Right Bottom">
<Property key="Caption" value="#{sTakeAll}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CloseButton" align="Right Bottom">
<Property key="Caption" value="#{sClose}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 600 125" name="_Main">
<Property key="Visible" value="false"/>
<Widget type="TextBox" skin="SandText" position="4 0 592 24" name="LabelText" align="Left Top HStretch">
<Property key="TextAlign" value="Center"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="4 30 532 24" name="ItemText" align="Left Top HStretch">
<Property key="TextAlign" value="Right"/>
</Widget>
<Widget type="EditBox" skin="MW_TextEdit" position="540 30 32 24" name="ItemEdit" align="Right Top">
<Property key="TextAlign" value="Center"/>
</Widget>
<Widget type="MWScrollBar" skin="MW_HScroll" position="28 60 544 18" name="CountSlider" align="Left Top HStretch">
<Property key="MoveToClick" value="true"/>
</Widget>
<Widget type="HBox" position="0 90 572 24" align="Right Bottom">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="417 90 60 24" name="CancelButton" align="Right Top">
<Property key="Caption" value="#{sCancel}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="512 90 60 24" name="OkButton" align="Right Top">
<Property key="Caption" value="#{sOk}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Window" layer="Windows" position="0 0 588 433" name="_Main">
<Property key="MinSize" value="380 230"/>
<Widget type="Widget" skin="MW_Box" position="8 8 415 381" align="Stretch" name="Client"/>
<Widget type="Widget" position="13 13 391 371" align="Left Top Stretch">
<Widget type="BookPage" skin="MW_BookPage" position="0 0 391 371" name="History" align="Left Top Stretch">
</Widget>
</Widget>
<Widget type="MWScrollBar" skin="MW_VScroll" position="404 13 14 371" align="Right VStretch" name="VScroll">
<Property key="Visible" value="false"/>
</Widget>
<!-- The disposition bar-->
<Widget type="ProgressBar" skin="MW_EnergyBar_Blue" position="432 8 132 18"
align="Right Top" name="Disposition">
<Widget type="EditBox" skin="MW_DispositionEdit" position_real="0 0 1 1" align="Stretch" name="DispositionText"/>
</Widget>
<!-- The list of topics -->
<Widget type="MWList" skin="MW_SimpleList" position="432 31 132 328" name="TopicsList" align="Right VStretch">
</Widget>
<!-- The Goodbye button -->
<Widget type="Button" skin="MW_Button" position="432 366 132 23" name="ByeButton" align="Right Bottom">
<Property key="Caption" value="#{sGoodbye}"/>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Skin">
<Skin name="MW_DispEdit" size="10 10">
<!--Property key="Pointer" value="beam" /-->
<BasisSkin type="EditText" offset="0 0 10 10" align="Stretch"/>
</Skin>
<Skin name="MW_DispositionEdit" size="0 0 50 50">
<Property key="FontName" value="Default"/>
<Property key="TextAlign" value="Center"/>
<Property key="Colour" value="0000FF"/>
<Property key="Static" value="1"/>
<Property key="WordWrap" value="true"/>
<Child type="TextBox" skin="MW_DispEdit" offset="0 0 0 -4" align="Stretch" name="Client"/>
</Skin>
</MyGUI>

View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Skin">
<!-- Text edit widget -->
<Skin name="MW_TextEditClient" size="10 10">
<BasisSkin type="EditText" offset="0 0 10 10" align="Stretch"/>
</Skin>
<Skin name="MW_TextBoxEditClient" size="10 10">
<BasisSkin type="EditText" offset="0 0 10 10" align="Stretch"/>
</Skin>
<Skin name="MW_TextEdit" size="512 20">
<!-- Input -->
<Property key="FontName" value="Default"/>
<Property key="TextAlign" value="Left VCenter"/>
<Property key="TextColour" value="0.75 0.6 0.35"/>
<Child type="TextBox" skin="MW_TextEditClient" offset="4 1 502 18" align="Stretch" name="Client"/>
<!-- Borders -->
<Child type="Widget" skin="MW_Box" offset="0 0 512 20" align="Stretch" name="Client"/>
</Skin>
<Skin name="MW_TextBoxEdit" size="512 20">
<Property key="FontName" value="Default"/>
<Property key="TextAlign" value="Left Top"/>
<Property key="TextColour" value="0.75 0.6 0.35"/>
<Child type="TextBox" skin="MW_TextBoxEditClient" offset="2 2 490 18" align="Stretch" name="Client"/>
<Child type="MWScrollBar" skin="MW_VScroll" offset="494 3 14 14" align="Right VStretch" name="VScroll"/>
</Skin>
</MyGUI>

View file

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 362 310" name="_Main">
<Widget type="ImageBox" skin="ImageBox" position="8 12 16 16" name="EffectImage">
</Widget>
<Widget type="TextBox" skin="NormalText" position="36 8 400 24" name="EffectName">
<Property key="TextAlign" value="Left HCenter"/>
</Widget>
<!-- Range -->
<Widget type="TextBox" skin="NormalText" position="8 36 400 24">
<Property key="Caption" value="#{sRange}"/>
<Property key="TextAlign" value="Left HCenter"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="130 36 0 24" name="RangeButton">
<Property key="Caption" value="#{sRangeTouch}"/>
</Widget>
<!-- Magnitude -->
<Widget type="Widget" position="8 80 400 70" name="MagnitudeBox">
<Widget type="TextBox" skin="NormalText" position="0 0 400 24">
<Property key="Caption" value="#{sMagnitude}"/>
<Property key="TextAlign" value="Left HCenter"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="122 0 210 20" name="MagnitudeMinValue">
<Property key="TextAlign" value="Center"/>
<Property key="Caption" value="0"/>
</Widget>
<Widget type="MWScrollBar" skin="MW_HScroll" position="122 20 210 13" name="MagnitudeMinSlider">
<Property key="Range" value="100"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="122 32 210 20" name="MagnitudeMaxValue">
<Property key="TextAlign" value="Center"/>
<Property key="Caption" value="0"/>
</Widget>
<Widget type="MWScrollBar" skin="MW_HScroll" position="122 52 210 13" name="MagnitudeMaxSlider">
<Property key="Range" value="100"/>
</Widget>
</Widget>
<!-- Duration -->
<Widget type="Widget" position="8 153 400 40" name="DurationBox">
<Widget type="TextBox" skin="NormalText" position="0 20 400 24">
<Property key="Caption" value="#{sDuration}"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="122 0 210 20" name="DurationValue">
<Property key="TextAlign" value="Center"/>
<Property key="Caption" value="0"/>
</Widget>
<Widget type="MWScrollBar" skin="MW_HScroll" position="122 20 210 13" name="DurationSlider">
<Property key="Range" value="1440"/>
</Widget>
</Widget>
<!-- Area -->
<Widget type="Widget" position="8 197 400 40" name="AreaBox">
<Widget type="TextBox" skin="NormalText" position="0 20 400 24" name="AreaText">
<Property key="Caption" value="#{sArea}"/>
<Property key="TextAlign" value="Left Top"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="122 0 210 20" name="AreaValue">
<Property key="TextAlign" value="Center"/>
<Property key="Caption" value="0"/>
</Widget>
<Widget type="MWScrollBar" skin="MW_HScroll" position="122 20 210 13" name="AreaSlider">
<Property key="Range" value="51"/>
</Widget>
</Widget>
<Widget type="HBox" position="8 266 336 24">
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="DeleteButton">
<Property key="Caption" value="#{sDelete}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OkButton">
<Property key="Caption" value="#{sOk}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Dialog" layer="Windows" position="0 0 560 400" name="_Main">
<Widget type="HBox" position="12 12 250 30">
<Widget type="AutoSizedTextBox" skin="NormalText">
<Property key="Caption" value="#{sName}"/>
</Widget>
<Widget type="EditBox" skin="MW_TextEdit" position="0 0 30 30" name="NameEdit">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="Widget">
</Widget>
</Widget>
<!-- Item -->
<Widget type="HBox" position="12 48 400 59">
<Property key="Spacing" value="8"/>
<Widget type="AutoSizedTextBox" skin="NormalText">
<Property key="Caption" value="#{sItem}"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="0 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="ItemBox"/>
</Widget>
<Widget type="Widget" position="0 0 8 0"/>
<Widget type="AutoSizedTextBox" skin="NormalText">
<Property key="Caption" value="#{sSoulGem}"/>
</Widget>
<Widget type="Button" skin="MW_Box" position="0 0 50 50">
<Widget type="ImageBox" skin="ImageBox" position="9 9 32 32" name="SoulBox"/>
</Widget>
</Widget>
<Widget type="TextBox" skin="NormalText" position="320 0 300 24">
<Property key="Caption" value="#{sEnchantmentMenu3}:"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="280 0 258 24" name="Enchantment">
<Property key="Caption" value="1"/>
<Property key="TextAlign" value="Right HCenter"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="320 24 300 24">
<Property key="Caption" value="#{sCastCost}:"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="280 24 258 24" name="CastCost">
<Property key="Caption" value="39"/>
<Property key="TextAlign" value="Right HCenter"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="320 48 300 24">
<Property key="Caption" value="#{sCharges}"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="280 48 258 24" name="Charge">
<Property key="Caption" value="39"/>
<Property key="TextAlign" value="Right HCenter"/>
</Widget>
<!-- Available effects -->
<Widget type="TextBox" skin="NormalText" position="12 108 300 24">
<Property key="Caption" value="#{sMagicEffects}"/>
</Widget>
<Widget type="MWList" skin="MW_SimpleList" position="12 136 202 209" name="AvailableEffects">
</Widget>
<!-- Used effects -->
<Widget type="TextBox" skin="NormalText" position="226 108 300 24">
<Property key="Caption" value="#{sEffects}"/>
</Widget>
<Widget type="Widget" skin="MW_Box" position="226 136 316 209">
<Widget type="ScrollView" skin="MW_ScrollViewH" position="4 4 308 201" name="UsedEffects">
<Property key="CanvasAlign" value="Left Top"/>
</Widget>
</Widget>
<Widget type="HBox" position="0 340 560 60">
<Property key="Padding" value="16"/>
<Widget type="AutoSizedButton" skin="MW_Button" name="TypeButton">
<Property key="Caption" value="Constant effect"/>
</Widget>
<Widget type="Widget">
<UserString key="HStretch" value="true"/>
</Widget>
<Widget type="AutoSizedTextBox" skin="NormalText" name="PriceTextLabel">
<Property key="Caption" value="#{sBarterDialog7}"/>
</Widget>
<Widget type="AutoSizedTextBox" skin="SandText" name="PriceLabel">
<Property key="Caption" value="0"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="BuyButton">
<Property key="Caption" value="#{sBuy}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Resource" version="1.1">
<Resource type="ResourceTrueTypeFont" name="EB Garamond">
<Property key="Source" value="EBGaramond-Regular.ttf"/>
<Property key="Size" value="16"/>
<Property key="Resolution" value="72"/>
<Property key="Antialias" value="false"/>
<Property key="TabWidth" value="8"/>
<Property key="OffsetHeight" value="0"/>
<Codes>
<Code range="33 126"/>
<Code range="160"/> <!-- Non-breaking space -->
<Code range="192 382"/> <!-- Central and Eastern European languages glyphs -->
<Code range="1025 1105"/>
<Code range="2026"/> <!-- Ellipsis -->
<Code range="8470"/>
<Code range="8211"/> <!-- Minus -->
<Code range="8216 8217"/> <!-- Single quotes -->
<Code range="8220 8221"/> <!-- Right and Left Double Quotation mark -->
<Code hide="128"/>
<Code hide="1026 1039"/>
<Code hide="1104"/>
</Codes>
</Resource>
<Resource type="ResourceTrueTypeFont" name="MonoFont">
<Property key="Source" value="DejaVuLGCSansMono.ttf"/>
<Property key="Size" value="18"/>
<Property key="Resolution" value="50"/>
<Property key="Antialias" value="false"/>
<Property key="TabWidth" value="8"/>
<Property key="OffsetHeight" value="0"/>
<Codes>
<Code range="33 126"/>
<Code range="192 382"/>
<Code range="1025 1105"/>
<Code range="8470"/>
<Code hide="128"/>
<Code hide="1026 1039"/>
<Code hide="1104"/>
</Codes>
</Resource>
</MyGUI>

View file

@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Widget" layer="HUD" position="0 0 300 200" name="_Main">
<!-- Energy bars -->
<Widget type="Widget" skin="" position="13 131 65 12" align="Left Bottom" name="EnemyHealthFrame">
<Widget type="ProgressBar" skin="MW_EnergyBar_Yellow" position="0 0 65 12" align="Left Bottom" name="EnemyHealth">
<Property key="Visible" value="false"/>
</Widget>
</Widget>
<Widget type="Button" skin="" position="13 146 65 12" align="Left Bottom" name="HealthFrame">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="HealthToolTip"/>
<UserString key="ImageTexture_HealthImage" value="icons\k\health.dds"/>
<Widget type="ProgressBar" skin="MW_EnergyBar_Red" position="0 0 65 12" align="Left Bottom" name="Health">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<Widget type="Button" skin="" position="13 161 65 12" align="Left Bottom" name="MagickaFrame">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="HealthToolTip"/>
<UserString key="ImageTexture_HealthImage" value="icons\k\magicka.dds"/>
<Widget type="ProgressBar" skin="MW_EnergyBar_Blue" position="0 0 65 12" align="Left Bottom" name="Magicka">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<Widget type="Button" skin="" position="13 176 65 12" align="Left Bottom" name="FatigueFrame">
<UserString key="ToolTipType" value="Layout"/>
<UserString key="ToolTipLayout" value="HealthToolTip"/>
<UserString key="ImageTexture_HealthImage" value="icons\k\fatigue.dds"/>
<Widget type="ProgressBar" skin="MW_EnergyBar_Green" position="0 0 65 12" align="Left Bottom" name="Stamina">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<!-- Drowning bar -->
<Widget type="Widget" skin="HUD_Box" position="0 36 220 56" align="Center Top" name="DrowningFrame">
<Property key="Visible" value="false"/>
<Widget type="TextBox" skin="SandText" position="0 8 220 24" name="DrowningTitle" align="Center Top HStretch">
<Property key="Caption" value="#{sBreath}"/>
<Property key="TextAlign" value="Center"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
</Widget>
<Widget type="ProgressBar" skin="MW_Progress_Loading" position="12 36 196 8" align="Center Top" name="Drowning">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<!-- Equipped weapon/selected spell name display for a few seconds after it changes -->
<Widget type="TextBox" skin="SandText" position="13 118 270 24" name="WeaponSpellName" align="Left Bottom HStretch">
<Property key="Visible" value="false"/>
<Property key="TextAlign" value="Left"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
</Widget>
<!-- Equipped weapon box -->
<Widget type="Button" skin="" position="82 146 36 41" align="Left Bottom" name="WeapBox">
<Widget type="Widget" skin="HUD_Box" position="0 0 36 36">
<Property key="NeedMouse" value="false"/>
<Widget type="ImageBox" skin="ImageBox" position="2 2 32 32" align="Left Top" name="WeapImage">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<Widget type="ProgressBar" skin="MW_EnergyBar_Red" position="0 36 36 6" align="Left Bottom" name="WeapStatus">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<!-- Selected spell box -->
<Widget type="Button" position="122 146 36 41" align="Left Bottom" name="SpellBox">
<Widget type="Widget" skin="HUD_Box" position="0 0 36 36">
<Widget type="ImageBox" skin="ImageBox" position="2 2 32 32" align="Left Top" name="SpellImage"/>
<Property key="NeedMouse" value="false"/>
</Widget>
<Widget type="ProgressBar" skin="MW_EnergyBar_Red" position="0 36 36 6" align="Left Bottom" name="SpellStatus">
<Property key="NeedMouse" value="false"/>
</Widget>
</Widget>
<!-- Sneak indicator box -->
<Widget type="Button" skin="" position="162 146 36 36" align="Left Bottom" name="SneakBox">
<Widget type="Widget" skin="HUD_Box" position="0 0 36 36">
<Property key="NeedMouse" value="false"/>
<Widget type="ImageBox" skin="ImageBox" position="2 2 32 32" align="Left Top" name="SneakImage">
<Property key="NeedMouse" value="false"/>
<Property key="ImageTexture" value="icons\k\stealth_sneak.dds"/>
</Widget>
</Widget>
</Widget>
<!-- Spell effects box -->
<Widget type="Widget" skin="HUD_Box_Transparent" position="199 168 20 20" align="Right Bottom" name="EffectBox">
</Widget>
<!-- Cell name display when cell changes -->
<Widget type="TextBox" skin="SandText" position="0 89 288 24" name="CellName" align="Left Bottom HStretch">
<Property key="Visible" value="false"/>
<Property key="TextAlign" value="Right"/>
<Property key="TextShadow" value="true"/>
<Property key="TextShadowColour" value="0 0 0"/>
</Widget>
<!-- Map box -->
<Widget type="Widget" skin="" position="223 123 65 65" name="MiniMapBox" align="Right Bottom">
<Widget type="Widget" skin="HUD_Box" position="0 0 65 65" align="Center">
<Widget type="ScrollView" skin="MW_MapView" position="2 2 61 61" align="Left Bottom" name="MiniMap">
<Property key="CanvasSize" value="1536 1536"/>
<Widget type="ImageBox" skin="RotatingSkin" position="0 0 32 32" align="Bottom Left" name="Compass">
<Property key="ImageTexture" value="textures\compass.dds"/>
</Widget>
<Widget type="Button" skin="" position="0 0 1536 1536" name="MiniMapButton" align="Right Bottom">
</Widget>
</Widget>
</Widget>
</Widget>
<!-- Crosshair -->
<Widget type="ImageBox" skin="ImageBox" position="0 0 32 32" align="Center Center" name="Crosshair">
<Property key="ImageTexture" value="textures\target.dds"/>
</Widget>
<!-- Basic FPSCounter box -->
<Widget type="Widget" skin="HUD_Box" position="12 12 32 26" align="Left Top" name="FPSBox">
<Property key="Visible" value="false"/>
<Widget type="TextBox" skin="NumFPS" position="3 3 25 17" align="Center" name="FPSCounter"/>
</Widget>
<!-- Advanced FPSCounter box -->
<Widget type="Widget" skin="HUD_Box" position="12 12 165 64" align="Left Top" name="FPSBoxAdv">
<Property key="Visible" value="false"/>
<Widget type="Widget" skin="" position="0 0 110 60" align="Left Top">
<Widget type="TextBox" skin="NumFPS" position="0 0 110 32" align="Left Top">
<Property key="Caption" value="FPS: "/>
<Property key="TextAlign" value="Right"/>
</Widget>
<Widget type="TextBox" skin="NumFPS" position="0 16 110 32" align="Left Top">
<Property key="Caption" value="Tri Count: "/>
<Property key="TextAlign" value="Right"/>
</Widget>
<Widget type="TextBox" skin="NumFPS" position="0 32 110 32" align="Left Top">
<Property key="Caption" value="Batch Count: "/>
<Property key="TextAlign" value="Right"/>
</Widget>
</Widget>
<Widget type="Widget" skin="" position="110 0 55 60" align="Left Top">
<Widget type="TextBox" skin="NumFPS" position="0 0 55 32" align="Left Top" name="FPSCounterAdv">
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="NumFPS" position="0 16 55 32" align="Left Top" name="TriangleCounter">
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="NumFPS" position="0 32 55 32" align="Left Top" name="BatchCounter">
<Property key="TextAlign" value="Left"/>
</Widget>
</Widget>
</Widget>
</Widget>
</MyGUI>

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Skin">
<!-- The 'box' frame that surrounds various HUD items and other elements -->
<Skin name="HUD_Box" size="40 40">
<!-- Borders -->
<Child type="Widget" skin="MW_Box" offset="0 0 40 40" align="Left Stretch" name="Client"/>
<!-- The interior of the box -->
<Child type="Widget" skin="BlackBG" offset="2 2 36 36" align="Stretch" name="Client"/>
</Skin>
<Skin name="HUD_Box_Transparent" size="40 40">
<Child type="Widget" skin="MW_Box" offset="0 0 40 40" align="Left Stretch" name="Client"/>
</Skin>
<Skin name="HUD_Box_NoTransp" size="40 40">
<!-- Borders -->
<Child type="Widget" skin="MW_Box" offset="0 0 40 40" align="Left Stretch" name="Client"/>
<!-- The interior of the box -->
<Child type="Widget" skin="DialogBG" offset="2 2 36 36" align="Stretch" name="Client"/>
</Skin>
</MyGUI>

Some files were not shown because too many files have changed in this diff Show more