Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика»





НазваниеРеферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика»
страница6/9
Дата публикации17.02.2015
Размер0.59 Mb.
ТипРеферат
100-bal.ru > Информатика > Реферат
1   2   3   4   5   6   7   8   9

{

float4 Diffuse;
// vLight is the unit vector from the light to this pixel

float3 vLight = normalize( float3( vPos - g_vLightPos ) );
// Compute diffuse from the light

if( dot( vLight, g_vLightDir ) > g_fCosTheta ) // Light must face the pixel (within Theta)

{

// Pixel is in lit area. Find out if it's

// in shadow using 2x2 percentage closest filtering
//transform from RT space to texture space.

float2 ShadowTexC = 0.5 * vPosLight.xy / vPosLight.w + float2( 0.5, 0.5 );

ShadowTexC.y = 1.0f - ShadowTexC.y;
//read depths

float sourcevals[4];

sourcevals[0] = (tex2D( g_samShadow, ShadowTexC ));

sourcevals[1] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 0) ));

sourcevals[2] = (tex2D( g_samShadow, ShadowTexC + float2(0, 1.0/SMAP_SIZE) ));

sourcevals[3] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE) ));

// max of the depth values

float Depth = max(max(sourcevals[0], sourcevals[1]), max(sourcevals[2], sourcevals[3]));

Depth = Depth + SHADOW_EPSILON < vPosLight.z / vPosLight.w ? 0.0f : 1.0f;

// Light it

Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * Depth * ( 1 - g_vLightAmbient ) + g_vLightAmbient )

* g_vMaterial;

} else

{

Diffuse = g_vLightAmbient * g_vMaterial;

}
return tex2D( g_samScene, Tex ) * Diffuse;

}

// MinDepth

float4 PixSceneMinDepth( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1,

float3 vNormal : TEXCOORD2,

float4 vPosLight : TEXCOORD3 ) : COLOR

{

float4 Diffuse;
// vLight is the unit vector from the light to this pixel

float3 vLight = normalize( float3( vPos - g_vLightPos ) );
// Compute diffuse from the light

if( dot( vLight, g_vLightDir ) > g_fCosTheta ) // Light must face the pixel (within Theta)

{

// Pixel is in lit area. Find out if it's

// in shadow using 2x2 percentage closest filtering
//transform from RT space to texture space.

float2 ShadowTexC = 0.5 * vPosLight.xy / vPosLight.w + float2( 0.5, 0.5 );

ShadowTexC.y = 1.0f - ShadowTexC.y;
//read depths

float sourcevals[4];

sourcevals[0] = (tex2D( g_samShadow, ShadowTexC ));

sourcevals[1] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 0) ));

sourcevals[2] = (tex2D( g_samShadow, ShadowTexC + float2(0, 1.0/SMAP_SIZE) ));

sourcevals[3] = (tex2D( g_samShadow, ShadowTexC + float2(1.0/SMAP_SIZE, 1.0/SMAP_SIZE) ));

// max of the depth values

float Depth = min(min(sourcevals[0], sourcevals[1]), min(sourcevals[2], sourcevals[3]));

Depth = Depth + SHADOW_EPSILON < vPosLight.z / vPosLight.w ? 0.0f : 1.0f;

// Light it

Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * Depth * ( 1 - g_vLightAmbient ) + g_vLightAmbient )

* g_vMaterial;

} else

{

Diffuse = g_vLightAmbient * g_vMaterial;

}
return tex2D( g_samScene, Tex ) * Diffuse;

}

// Grads

float4 PixSceneGrads( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1,

float3 vNormal : TEXCOORD2,

float4 vPosLight : TEXCOORD3 ) : COLOR

{

float4 Diffuse;
// vLight is the unit vector from the light to this pixel

float3 vLight = normalize( float3( vPos - g_vLightPos ) );
// Compute diffuse from the light

if( dot( vLight, g_vLightDir ) > g_fCosTheta ) // Light must face the pixel (within Theta)

{

// Pixel is in lit area. Find out if it's

// in shadow using 2x2 percentage closest filtering


//transform from RT space to texture space.

float2 ShadowTexC = 0.5 * vPosLight.xy / vPosLight.w + float2( 0.5 + 0.5/SMAP_SIZE, 0.5 - 0.5/SMAP_SIZE );

ShadowTexC.y = 1.0f - ShadowTexC.y;

// compute grads wrt light src

float3 str = vPosLight.xyz / vPosLight.w;

float3

d_str_dx = ddx(str) * g_screen_res.x,

d_str_dy = ddy(str) * g_screen_res.y;

float2x2 d_st_dxdy = { d_str_dx.xy, d_str_dy.xy };

float2x2 d_st_dxdy_inv = float2x2(d_st_dxdy._22, d_st_dxdy._12, d_st_dxdy._21, d_st_dxdy._11) / determinant(d_st_dxdy);

float2 d_r_dsdt_abs = abs(mul(d_st_dxdy_inv, float2(d_str_dx.z, d_str_dy.z)));

float grads_magnitude = 0.5 * (d_r_dsdt_abs.x + d_r_dsdt_abs.y);//return grads_magnitude/10;
// do the shadow check

float Depth = tex2D( g_samShadow, ShadowTexC ) + SHADOW_EPSILON < vPosLight.z / vPosLight.w ? 0.0f : 1.0f;
// apply grads fade

Depth *= (1 - smoothstep(g_grad_begin_fade, g_grad_end_fade, grads_magnitude));

// Light it

Diffuse = ( saturate( dot( -vLight, normalize( vNormal ) ) ) * Depth * ( 1 - g_vLightAmbient ) + g_vLightAmbient )

* g_vMaterial;

} else

{

Diffuse = g_vLightAmbient * g_vMaterial;

}
return tex2D( g_samScene, Tex ) * Diffuse;

}


//-----------------------------------------------------------------------------

// Vertex Shader: VertLight

// Desc: Process vertex for the light object

//-----------------------------------------------------------------------------

void VertLight( float4 iPos : POSITION,

float3 iNormal : NORMAL,

float2 iTex : TEXCOORD0,

out float4 oPos : POSITION,

out float2 Tex : TEXCOORD0 )

{

//

// Transform position to view space

//

oPos = mul( iPos, g_mWorldView );
//

// Transform to screen coord

//

oPos = mul( oPos, g_mProj );
//

// Propagate texture coord

//

Tex = iTex;

}

//-----------------------------------------------------------------------------

// Pixel Shader: PixLight

// Desc: Process pixel for the light object

//-----------------------------------------------------------------------------

float4 PixLight( float2 Tex : TEXCOORD0,

float4 vPos : TEXCOORD1 ) : COLOR

{

return tex2D( g_samScene, Tex );

}

//-----------------------------------------------------------------------------

// Vertex Shader: VertShadow

// Desc: Process vertex for the shadow map

//-----------------------------------------------------------------------------

void VertShadow( float4 Pos : POSITION,

float3 Normal : NORMAL,

out float4 oPos : POSITION,

out float2 Depth : TEXCOORD0 )

{

//

// Compute the projected coordinates

//

oPos = mul( Pos, g_mWorldView );

oPos = mul( oPos, g_mProj );
//

// Store z and w in our spare texcoord

//

Depth.xy = oPos.zw;

}

//-----------------------------------------------------------------------------

// Pixel Shader: PixShadow

// Desc: Process pixel for the shadow map

//-----------------------------------------------------------------------------

void PixShadow( float2 Depth : TEXCOORD0,

out float4 Color : COLOR )

{

//

// Depth is z / w

//

Color = Depth.x / Depth.y;

}

// SlopeScaleBias

void PixShadowSlopeScaleBiasMax( float2 Depth : TEXCOORD0,

out float4 Color : COLOR )

{

//

// Depth is z / w

//

Color = Depth.x / Depth.y;

Color += max(abs(ddx(Color)), abs(ddy(Color)));

}

void PixShadowSlopeScaleBiasSum( float2 Depth : TEXCOORD0,

out float4 Color : COLOR )

{

//

// Depth is z / w

//

Color = Depth.x / Depth.y;

Color += 0.5 * (abs(ddx(Color)) + abs(ddy(Color)));

}

//-----------------------------------------------------------------------------

// Technique: RenderScene

// Desc: Renders scene objects

//-----------------------------------------------------------------------------

technique RenderScene

{

pass p0

{

VertexShader = compile vs_1_1 VertScene();

PixelShader = compile ps_2_0 PixScene();

}

}

technique RenderScenePoint

{

pass p0

{

VertexShader = compile vs_1_1 VertScene();

PixelShader = compile ps_2_0 PixScenePoint();

}

}

technique RenderSceneBilinear

{

pass p0

{

VertexShader = compile vs_1_1 VertScene();

PixelShader = compile ps_2_0 PixSceneBilinear();

}

}

technique RenderSceneMaxDepth

{

pass p0

{

VertexShader = compile vs_1_1 VertScene();

PixelShader = compile ps_2_0 PixSceneMaxDepth();

}

}

technique RenderSceneMinDepth

{

pass p0

{

VertexShader = compile vs_3_0 VertScene();

PixelShader = compile ps_3_0 PixSceneMinDepth();

}

}

technique RenderSxeneGrads

{

pass p0

{

VertexShader = compile vs_3_0 VertScene();

PixelShader = compile ps_3_0 PixSceneGrads();

}

}


//-----------------------------------------------------------------------------

// Technique: RenderLight

// Desc: Renders the light object

//-----------------------------------------------------------------------------

technique RenderLight

{

pass p0

{

VertexShader = compile vs_1_1 VertLight();

PixelShader = compile ps_1_1 PixLight();

}

}

//-----------------------------------------------------------------------------

// Technique: RenderShadow

// Desc: Renders the shadow map

//-----------------------------------------------------------------------------

technique RenderShadow

{

pass p0

{

VertexShader = compile vs_1_1 VertShadow();

PixelShader = compile ps_2_0 PixShadow();

}

}

technique RenderShadowSlopeScaleBiasMax

{

pass p0

{

VertexShader = compile vs_1_1 VertShadow();

PixelShader = compile ps_2_a PixShadowSlopeScaleBiasMax();

}

}

technique RenderShadowSlopeScaleBiasSum

{

pass p0

{

VertexShader = compile vs_1_1 VertShadow();

PixelShader = compile ps_2_a PixShadowSlopeScaleBiasSum();

}

}


defines.fxh

//--------------------------------------------------------------------------------------

// File: defines.fxh

//--------------------------------------------------------------------------------------

#pragma once
// rendering modes

#define RENDERING_MODE_FINAL 0

#define RENDERING_MODE_LOCAL_NORMAL 1

#define RENDERING_MODE_WORAL_NORMAL 2

#define RENDERING_MODE_SEARCH_STEPS 3
// gradient evaluation methods

#define GRAD_METHOD_STD 0

#define GRAD_METHOD_BASE_PLANE 1

#define GRAD_METHOD_HYBRID 2


shared.fxh

//--------------------------------------------------------------------------------------

// File: shared.fxh

//--------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------

// Shared variables

//--------------------------------------------------------------------------------------

shared textureCUBE g_CubeTexture; // color texture for cube
shared float g_fTime; // App's time in seconds

shared float4x4 g_mViewProjection; // View * Projection matrix

//--------------------------------------------------------------------------------------

// Texture samplers

//--------------------------------------------------------------------------------------

samplerCUBE CubeMapSampler =

sampler_state

{

Texture = ;

MipFilter = LINEAR;

MinFilter = ANISOTROPIC;

MagFilter = LINEAR;

MaxAnisotropy = 16;

AddressU = CLAMP;

AddressV = CLAMP;

AddressW = CLAMP;

};


Cube.fx

//--------------------------------------------------------------------------------------

// File: Cube.fx

//--------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------

// Includes

//--------------------------------------------------------------------------------------

#include "shared.fxh"

//--------------------------------------------------------------------------------------

// Global variables

//--------------------------------------------------------------------------------------

float4x4 g_mWorld; // World matrix for cube

//--------------------------------------------------------------------------------------

// Vertex shader output structure

//--------------------------------------------------------------------------------------

struct VS_OUTPUT

{

float4 Position : POSITION; // vertex position

float3 TextureXYZ : TEXCOORD0; // vertex texture coords

};

//--------------------------------------------------------------------------------------

// This shader computes standard transform

//--------------------------------------------------------------------------------------

VS_OUTPUT Transform_VS(float3 vPos : POSITION)

{

VS_OUTPUT Output;

float4x4 g_mWorldViewProjection = mul(g_mWorld, g_mViewProjection);

// Transform the position from object space to homogeneous projection space

Output.Position = mul(float4(vPos, 1), g_mWorldViewProjection);

// Just copy the texture coordinate through

Output.TextureXYZ = vPos;

return Output;

}

//--------------------------------------------------------------------------------------

// Cube pixel shader

//--------------------------------------------------------------------------------------

float4 Cube_PS(VS_OUTPUT In) : COLOR0

{

float4 Output;

// Lookup cube map

Output.rgb = texCUBE(CubeMapSampler, In.TextureXYZ);

Output.a = 1;

return Output;

}

//--------------------------------------------------------------------------------------

// Techniques

//--------------------------------------------------------------------------------------

technique Cube

{

pass P0

{

VertexShader = compile vs_2_0 Transform_VS();

PixelShader = compile ps_2_0 Cube_PS();

CullMode = CW;

}

}


SurfaceDetailVariations.fx
1   2   3   4   5   6   7   8   9

Похожие:

Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconРеферат: Коваленко А. Е. Разработка системы научной визуализации....
Коваленко А. Е. Разработка системы научной визуализации. Квалификационная работа на степень магистра наук по направлению «Математика....
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconРеферат Флягина Т. А. Проблемы разработки многооконных интерфейсов,...
Флягина Т. А. Проблемы разработки многооконных интерфейсов, квалификационная работа на степень бакалавра наук
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconКвалификационной работы на факультете математики и компьютерных наук
В соответствии с действующими государственными образовательными стандартами выпускная квалификационная работа по специальности «Математика»...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconДиссертация на степень магистра наук по направлению «Математика, компьютерные науки»
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconДипломная работа по направлению Математика. Прикладная математика студента гр. Мт 505
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины Современные методы принятия решений  для направления...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 010400....
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины «Герменевтика» для направления 010400. 68 «Прикладная...
Программа предназначена для преподавателей, ведущих данную дисциплину, и студентов направления подготовки 010400. 68 "Прикладная...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» icon1 Нормативные документы для разработки ооп впо по направлению подготовки...
Общая характеристика вузовской основной образовательной программы высшего профессионального образования по направлению подготовки...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconРеферат Тычинин И. А. Разработка приложения для портативных устройств...
Тычинин И. А. Разработка приложения для портативных устройств с использованием qt framework, квалификационная работа на степень бакалавра...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
Нормативные документы для разработки ооп бакалавриата по направлению подготовки «Прикладная математика и информатика»
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины Архитектура ЭВМ для направления 010400. 68 «Прикладная...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направлений подготовки 010400....
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconОбразовательная программа высшего образования, реализуемая университетом...
...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconЛитература
Уросов А. П. Разработка методик визуализации для представления работы параллельных программ, квалификационная работа на степень бакалавра...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconЕН. Ф. 1 Математика и информатика: математика
Учебная дисциплина Математика и информатика: "Математика" введена в процесс обуче­ния для бакалавров по направлению подготовки "Художественное...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины «Модели корпусной лингвистики» для направления...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления 010400. 68 "Прикладная...
Реферат: Шайдуров А. Г. Исследование и разработка некоторых графических алгоритмов. Квалификационная работа на степень магистра наук по направлению «Математика. Прикладная математика» iconПрограмма дисциплины «История» для направления 231300. 62 и 230700....
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки 231300....


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск