Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions Part1/PROJ_WIN/Project3/Project3.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v110</PlatformToolset>
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand All @@ -42,6 +42,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
Expand Down Expand Up @@ -71,12 +74,18 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>cudart.lib; glew32.lib;glu32.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<CudaCompile>
<Include>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes</Include>
</CudaCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\src\glslUtility.cpp" />
Expand All @@ -100,7 +109,8 @@
<None Include="shaders\heightFS.glsl" />
<None Include="shaders\heightVS.glsl" />
<None Include="shaders\planetFS.glsl" />
<None Include="shaders\planetGS.glsl" />
<None Include="shaders\planetGS_cloth.glsl" />
<None Include="shaders\planetGS_flock.glsl" />
<None Include="shaders\planetVS.glsl" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
Expand Down
7 changes: 5 additions & 2 deletions Part1/PROJ_WIN/Project3/Project3.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,13 @@
<None Include="shaders\planetFS.glsl">
<Filter>Resource Files</Filter>
</None>
<None Include="shaders\planetGS.glsl">
<None Include="shaders\planetVS.glsl">
<Filter>Resource Files</Filter>
</None>
<None Include="shaders\planetVS.glsl">
<None Include="shaders\planetGS_flock.glsl">
<Filter>Resource Files</Filter>
</None>
<None Include="shaders\planetGS_cloth.glsl">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
Expand Down
14 changes: 12 additions & 2 deletions Part1/PROJ_WIN/Project3/shaders/heightFS.glsl
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
#version 330

in float f_height;
in vec2 v_Texcoords;

void main(void)
{
gl_FragColor = vec4(0.05,0.15,0.3,1.0);
}
float shade = (1.0-2.0*sqrt(f_height));
float alpha = float(mod(v_Texcoords.x+0.025, 0.05) > 0.046 ||mod(v_Texcoords.y+0.025, 0.05) > 0.046);
vec4 color = mix(vec4(0.05,0.15,0.3,1.0), vec4(0.05, 0.3, 0.4, 1.0), alpha);


gl_FragColor = shade*color*1.5f;
}
22 changes: 17 additions & 5 deletions Part1/PROJ_WIN/Project3/shaders/heightVS.glsl
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
#version 330

uniform mat4 u_projMatrix;
attribute vec4 Position;
uniform sampler2D u_height;

in vec4 Position;
in vec2 Texcoords;

out vec2 v_Texcoords;
out float f_height;

void main(void)
{
vec4 pos = u_projMatrix * Position;
pos.z += 0.01;
gl_Position = pos;
}
v_Texcoords = Texcoords;
vec4 pos = Position;
f_height = texture2D(u_height, Texcoords).w;
pos.z = -0.01-clamp(f_height,0.0,2.0);
//pos.z=-0.5f;//-f_height/2.0f;
pos = u_projMatrix * pos;
gl_Position = pos;
}
56 changes: 53 additions & 3 deletions Part1/PROJ_WIN/Project3/shaders/planetFS.glsl
Original file line number Diff line number Diff line change
@@ -1,4 +1,54 @@
void main(void)
#version 330

uniform vec3 u_targetposition;

in vec3 WorldCoord;
in vec3 ToCam;
in vec3 Up;
in vec3 Right;
in vec2 TexCoord;
out vec4 FragColor;


in vec3 normal_f1;
in vec3 normal_f2;
in vec3 normal_f3;
in vec3 normal_f4;

in vec3 thecolor;

void main()
{
gl_FragColor = vec4(1.0);
}
vec2 coord = 2.01 * (TexCoord - vec2(0.5));
float r = length(coord);
// if (r >= 1.0) { discard; }
float dist = length(-u_targetposition/100.0f-WorldCoord);
if(dist <= 0.01)
{
FragColor = vec4(1.0f);
return;
}

vec3 N = Right*-coord.x + Up*coord.y + ToCam*sqrt(1-r*r);

float x=TexCoord.x;
float y=TexCoord.y;
if(y<0.5f){if(x+y<0.5f) N=normal_f1;else N=normal_f2;}
else{if(x+y<1.0f)N=normal_f3;else N=normal_f4;}

vec3 L2= vec3(0,0,1);
float light2 = 0.1 + 0.9*clamp(dot(N,L2),0.0, 1.0);//*exp(-dist);


vec3 L1 = normalize(-u_targetposition/100.0f-WorldCoord);
float light1 = 0.1 + 0.9*clamp(dot(N,L1),0.0, 1.0)*exp(-dist/2.0f);



vec3 color = vec3(77, 184, 73)*(1.0f/255.0f);

FragColor = vec4(thecolor*(light1+light2),1.0)*1.0f;
//FragColor=vec4((N+vec3(1.0f))*0.5f,1.0f);


}
15 changes: 0 additions & 15 deletions Part1/PROJ_WIN/Project3/shaders/planetGS.glsl

This file was deleted.

130 changes: 130 additions & 0 deletions Part1/PROJ_WIN/Project3/shaders/planetGS_cloth.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
#version 330

uniform mat4 u_projMatrix;
uniform vec3 u_cameraPos;

layout (points) in;
layout (triangle_strip , max_vertices=6) out;

in vec3 v_Velocity[];

out vec3 WorldCoord;
out vec3 ToCam;
out vec3 Up;
out vec3 Right;
out vec2 TexCoord;

out vec3 normal_f1;
out vec3 normal_f2;
out vec3 normal_f3;
out vec3 normal_f4;

out vec3 thecolor;

const float scale = 0.03;


void main()
{

vec3 g_Vel=v_Velocity[0];

vec3 Position = gl_in[0].gl_Position.xyz;

WorldCoord = Position;

float coloridx=gl_in[0].gl_Position.w;
if(coloridx<0.05f)
{
thecolor=vec3(227,51,49)/255.0f;
}
else if(coloridx<1.05f)
{
thecolor=vec3(252,210,9)/255.0f;
}
else if(coloridx<2.05f)
{
thecolor=vec3(76,183,73)/255.0f;
}
else if(coloridx<3.05f)
{
thecolor=vec3(78,135,192)/255.0f;
}
else if(coloridx<4.05f)
{
thecolor=vec3(163,101,247)/255.0f;
}

//thecolor=vec3(1,1,1);


//vec3 orientation=normalize(g_Vel);
//vec3 up=(abs(orientation.x)>0.5f)?vec3(0,1,0):vec3(1,0,0);
//vec3 left=normalize(cross(orientation,up));
//up=normalize(cross(orientation,left));


//vec3 pos1=Position+scale*(up);
//vec3 pos2=Position+scale*(-0.5*up-0.866*left);
//vec3 pos3=Position+scale*(-0.5*up+0.866*left);
//vec3 pos4=Position+scale*(4.414*orientation);

vec3 pos1=Position+scale*vec3(1,0,0);
vec3 pos2=Position+scale*vec3(-0.5,0.866,0);
vec3 pos3=Position+scale*vec3(-0.5,-0.866,0);
vec3 pos4=Position+scale*vec3(0,0,1.414);



normal_f1=normalize(cross(pos1-pos2,pos2-pos3));
normal_f2=normalize(cross(pos4-pos2,pos2-pos3));
normal_f3=normalize(cross(pos3-pos1,pos1-pos4));
normal_f4=normalize(cross(pos4-pos1,pos1-pos2));


ToCam = normalize(u_cameraPos - Position);
Up = vec3(0.0, 0.0, 1.0);
Right = cross(ToCam, Up);
Up = cross(Right, ToCam);


vec3 Pos = Position + scale*Right - scale*Up;
Pos=pos1;
gl_Position = u_projMatrix * vec4(Pos, 1.0);
TexCoord = vec2(0.0, 0.0);
EmitVertex();

//Pos = Position + scale*Right + scale*Up;
Pos=pos2;
gl_Position = u_projMatrix * vec4(Pos, 1.0);
TexCoord = vec2(0.5, 0.0);
EmitVertex();

//Pos = Position - scale*Right - scale*Up;
Pos=pos3;
gl_Position = u_projMatrix * vec4(Pos, 1.0);
TexCoord = vec2(0.0, 0.5);
EmitVertex();

Pos=pos4;
gl_Position = u_projMatrix * vec4(Pos, 1.0);
TexCoord = vec2(0.5, 0.5);
EmitVertex();

Pos=pos1;
gl_Position = u_projMatrix * vec4(Pos, 1.0);
TexCoord = vec2(0.0, 1.0);
EmitVertex();

Pos=pos2;
gl_Position = u_projMatrix * vec4(Pos, 1.0);
TexCoord = vec2(0.5, 1.0);
EmitVertex();

//Pos = Position - scale*Right + scale*Up;
//gl_Position = u_projMatrix * vec4(Pos, 1.0);
//TexCoord = vec2(1.0, 1.0);
//EmitVertex();

EndPrimitive();
}
Loading