#include "illum.hlsl" float4 readCubeMap(samplerCUBE cm, float3 coord) { float4 color = texCUBE( cm, float3(coord.xy, - coord.z) ); color.a = 1; return color; } struct Sword_VS_OUT { float4 hPos : POSITION; float2 texCoord : TEXCOORD0; float3 wView : TEXCOORD2; float3 wTangent : TEXCOORD3; float3 wBinormal : TEXCOORD4; float3 wNormal : TEXCOORD5; float3 wPos : TEXCOORD1; }; uniform float4x4 WorldViewProj; uniform float4x4 World; uniform float4x4 WorldI; uniform float3 wCamPos; uniform float4 wLightPos1; uniform float4 wLightPos2; uniform float4 lightRange1; uniform float4 lightRange2; uniform float lightPower1; uniform float lightPower2; uniform float4 lightColor1; uniform float4 lightColor2; uniform float4x4 LightView1; uniform float4x4 LightView2; uniform float lightFarPlane1; uniform float lightFarPlane2; uniform float specularity; uniform float4 specularColor; Sword_VS_OUT Sword_VS(float4 position :POSITION, float3 normal :NORMAL, float2 texCoord : TEXCOORD0, float3 tangent : TEXCOORD1) { Sword_VS_OUT OUT = (Sword_VS_OUT) 0; OUT.texCoord = texCoord; OUT.hPos = mul(WorldViewProj, position); OUT.wPos = mul(World, position).xyz; OUT.wView = wCamPos - OUT.wPos; OUT.wTangent = normalize(mul(float4(tangent, 1),WorldI)).xyz; OUT.wNormal = normalize(mul(float4(normal, 1),WorldI)).xyz; OUT.wBinormal = cross(OUT.wTangent, OUT.wNormal).xyz; return OUT; } struct ShadedTex_OUT { float4 vPos : POSITION; float4 texCoord : TEXCOORD0; float4 wNormal : TEXCOORD1; float4 wPos : TEXCOORD2; }; float4 Sword_Metal_PS( ShadedTex_OUT IN, uniform samplerCUBE CubeMap : register(s0), uniform sampler2D colorTexture : register(s1), uniform float3 lastCenter):COLOR0 { if(!tex2D(colorTexture, IN.texCoord).a) discard; float3 F0 = tex2D(colorTexture, IN.texCoord).rgb; float4 Color; float3 N = normalize(IN.wNormal.xyz); float3 RR; float3 V = normalize(IN.wPos.xyz - wCamPos); float3 R = reflect( V, N); Color = readCubeMap(CubeMap, R); float ctheta_in = dot(N, R); float ctheta_out = dot(N, -V); float3 F = 0; float3 H = normalize(R - V); // felezõvektor float cbeta = dot(H,R); F = F0 + (1 - F0) * pow(1 - cbeta, 5); return Color * float4(F,1); } float4 Sword_Handle_PS( Sword_VS_OUT IN, uniform sampler2D colorTexture : register(s0), uniform sampler2D bumpTexture : register(s1), uniform samplerCUBE ShadowMap1Point : register(s2), uniform samplerCUBE ShadowMap2Point : register(s3), uniform float3 cameraPos, uniform float3 lastCenter):COLOR0 { float4 Color = 0; float3 N = IN.wNormal;//NormalMap(IN.wTangent, IN.wBinormal, IN.wNormal, IN.texCoord, bumpTexture); float3 V = normalize(IN.wView); float3 L; float4 col; float3 lightCPos; float shadow; float4 diffuseColor = tex2D(colorTexture, IN.texCoord); //if(dot(lightColor1, lightColor1) != 0) //{ L = wLightPos1.xyz - IN.wPos * wLightPos1.w; //illumination col = Illumination(N, L, V, lightColor1 * lightPower1, lightRange1, diffuseColor, specularity, specularColor); //shadowing lightCPos = mul(LightView1, float4(IN.wPos, 1)).xyz; shadow = shadowPoint(ShadowMap1Point, lightCPos, lightFarPlane1); Color += col;// * shadow; Color += diffuseColor * lightPower1 * 0.001; return Color; }