Got tired of everything and just used loctite ultra gel control on the generate normals.

Locktite ultra is the shit.
This commit is contained in:
Edward R. Gonzalez 2020-02-20 17:18:08 -05:00
parent 8715347088
commit d4bfec3944
13 changed files with 199 additions and 413 deletions

View File

@ -1,175 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Actions.hpp" />
<ClInclude Include="Cpp_Alias.hpp" />
<ClInclude Include="DGL_Buffers.hpp" />
<ClInclude Include="DGL_Model.hpp" />
<ClInclude Include="DGL_Space.hpp" />
<ClInclude Include="DGL_Enum.hpp" />
<ClInclude Include="DGL_FundamentalTypes.hpp" />
<ClInclude Include="DGL_MiscTypes.hpp" />
<ClInclude Include="DGL.hpp" />
<ClInclude Include="DGL_Shader.hpp" />
<ClInclude Include="DGL_Variable.hpp" />
<ClInclude Include="ShaderFromTut.hpp" />
<ClInclude Include="Testing.hpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Execution.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="3.3.shader.frag" />
<None Include="3.3.shader.vert" />
<None Include="5.1.transform.frag" />
<None Include="5.1.transform.vert" />
<None Include="6.3.coordinate_systems.frag" />
<None Include="6.3.coordinate_systems.vert" />
<None Include="BasicLamp.frag" />
<None Include="BasicLighting.frag" />
<None Include="PhongShader.frag" />
<None Include="PhongShader.vert" />
<None Include="SingleColor.frag" />
<None Include="SimpleFragmentShader.frag" />
<None Include="SimpleTransform.vert" />
<None Include="SimpleVertexShader.vert" />
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<ProjectGuid>{4F39A7F3-8E88-4B30-A89D-44BE8F5DD0A9}</ProjectGuid>
<RootNamespace>CompGraphics</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IncludePath>F:\Development\cpp_libs\glfw-3.3.2.bin.WIN64\include\GLFW;$(IncludePath)</IncludePath>
<LibraryPath>F:\Development\cpp_libs\glfw-3.3.2.bin.WIN64\lib-vc2019;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ExecutablePath>$(ExecutablePath)</ExecutablePath>
<IncludePath>F:\Development\cpp_libs\glfw-3.3.2.bin.WIN64\include\GLFW;F:\Development\cpp_libs\glew-2.1.0\include\GL;F:\Development\cpp_libs\glm;$(IncludePath)</IncludePath>
<LibraryPath>F:\Development\cpp_libs\glfw-3.3.2.bin.WIN64\lib-vc2019;F:\Development\cpp_libs\glew-2.1.0\lib\Release\x64;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalDependencies>glfw3.lib;opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>F:\Development\cpp_libs\glfw-3.3.2.bin.WIN64\lib-vc2019;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>F:\Development\cpp_libs\glfw-3.3.2.bin.WIN64\lib-vc2019;F:\Development\cpp_libs\glew-2.1.0\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>glfw3.lib;opengl32.lib;glew32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="Cpp_Alias.hpp" />
<ClInclude Include="DGL_FundamentalTypes.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL_Shader.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL_Enum.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL_Buffers.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL_MiscTypes.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL_Variable.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="ShaderFromTut.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="DGL_Space.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
<ClInclude Include="Testing.hpp" />
<ClInclude Include="Actions.hpp" />
<ClInclude Include="DGL_Model.hpp">
<Filter>Ducktape_GL</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Execution.cpp" />
</ItemGroup>
<ItemGroup>
<Filter Include="Ducktape_GL">
<UniqueIdentifier>{dffb88da-bab3-4079-8f08-9bb1e7475f9d}</UniqueIdentifier>
</Filter>
<Filter Include="Shaders">
<UniqueIdentifier>{05484b5d-cbf0-49d7-a593-8fffa98fadb3}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="3.3.shader.frag">
<Filter>Shaders</Filter>
</None>
<None Include="3.3.shader.vert">
<Filter>Shaders</Filter>
</None>
<None Include="5.1.transform.frag">
<Filter>Shaders</Filter>
</None>
<None Include="5.1.transform.vert">
<Filter>Shaders</Filter>
</None>
<None Include="6.3.coordinate_systems.frag">
<Filter>Shaders</Filter>
</None>
<None Include="6.3.coordinate_systems.vert">
<Filter>Shaders</Filter>
</None>
<None Include="SimpleFragmentShader.frag">
<Filter>Shaders</Filter>
</None>
<None Include="SimpleTransform.vert">
<Filter>Shaders</Filter>
</None>
<None Include="SimpleVertexShader.vert">
<Filter>Shaders</Filter>
</None>
<None Include="SingleColor.frag">
<Filter>Shaders</Filter>
</None>
<None Include="BasicLighting.frag">
<Filter>Shaders</Filter>
</None>
<None Include="BasicLamp.frag">
<Filter>Shaders</Filter>
</None>
<None Include="PhongShader.vert">
<Filter>Shaders</Filter>
</None>
<None Include="PhongShader.frag">
<Filter>Shaders</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
</Project>

View File

@ -3,6 +3,7 @@
// OpenGL // OpenGL
#include <glew.h > #include <glew.h >
#include <glm/detail/type_vec3.hpp> #include <glm/detail/type_vec3.hpp>
#include <glm/detail/type_vec2.hpp>
// Duck Tape // Duck Tape
@ -19,6 +20,9 @@ namespace DGL
{ {
template<typename Type> template<typename Type>
using Vector3 = glm::tvec3<Type>; using Vector3 = glm::tvec3<Type>;
template<typename Type>
using Vector2 = glm::tvec2<Type>;
} }
using DataPtr = ptr<GLvoid>; using DataPtr = ptr<GLvoid>;
@ -35,6 +39,7 @@ namespace DGL
class Shader ; class Shader ;
class ShaderProgram; class ShaderProgram;
class VertexArray ; class VertexArray ;
class TextureBuffer;
class ElementBuffer; class ElementBuffer;

View File

@ -1,14 +1,26 @@
#pragma once #pragma once
// DGL
#include "DGL_Buffers.hpp" #include "DGL_Buffers.hpp"
#include "DGL_Space.hpp" #include "DGL_Space.hpp"
// C++
#include "Cpp_Alias.hpp" #include "Cpp_Alias.hpp"
namespace DGL namespace DGL
{ {
using std::string;
using UVList = std ::vector < Vector2>;
using Vec3Int = Generic::Vector3< gUInt >;
using Vec2Int = Generic::Vector2< gUInt >;
using VertexList = std ::vector < Vector3>;
using VIndexList = std ::vector < gInt >;
sfn Offset(gInt _offsetAmount) sfn Offset(gInt _offsetAmount)
{ {
return ptr<void>(_offsetAmount); return ptr<void>(_offsetAmount);
@ -19,22 +31,29 @@ namespace DGL
return 0; return 0;
} }
using std::string;
using VertexList = std ::vector < Vector3>;
using UVList = std ::vector < Vector2>;
using VecInt = Generic::Vector3< gUInt >;
using VIndexList = std ::vector < gInt >;
struct VertexGenerator struct VertexGenerator
{ {
using ComponentList = std::vector< gFloat>; using ComponentList = std::vector< gFloat>;
ComponentList comp; ComponentList comp;
// TODO: De-hard-code this generator to do any vector size.
sfn GetVector() -> Vector3
{
return Vector3(comp.at(0), comp.at(1), comp.at(2));
}
sfn GetVector2() -> Vector2
{
return Vector2(comp.at(0), comp.at(1));
}
void Normalize() void Normalize()
{ {
using std::pow ; using std::pow ;
@ -56,24 +75,19 @@ namespace DGL
*element /= magnitude; *element /= magnitude;
} }
} }
// TODO: De-hard-code this generator to do any vector size.
sfn GetVector() -> Vector3
{
return Vector3(comp.at(0), comp.at(1), comp.at(2));
}
}; };
struct Face struct Face
{ {
VecInt Vertexes, Vec3Int Vertexes, Normals;
Normals;
//UVs[3];
}; };
using FaceList = std::vector<Face>; using FaceList = std::vector<Face>;
struct FaceGenerator struct FaceGenerator
{ {
using ComponentList = std::vector< gUInt>; using ComponentList = std::vector< gUInt>;
@ -103,9 +117,12 @@ namespace DGL
{ {
generated.Vertexes[index] = vertIndexes[index]; generated.Vertexes[index] = vertIndexes[index];
if (uvIndexes.size() > 0) if (index < 2)
{ {
//generated.UVs[index] = uvIndexes[index]; if (uvIndexes.size() > 0)
{
//generated.UVs[index] = uvIndexes[index];
}
} }
if (normals.size() > 0) if (normals.size() > 0)
@ -114,39 +131,39 @@ namespace DGL
} }
} }
if (uvIndexes.size() == 0)
{
//generated.UVs = { 0, 0 };
}
return generated; return generated;
} }
}; };
struct Model struct Model
{ {
struct VN
{
Vector3 Vertex, Normal;
VN(Vector3 _v, Vector3 _n) : Vertex(_v), Normal(_n) {};
};
using VNList = std::vector<VN>;
ID<VertexArray > VAO; ID<VertexArray > VAO;
ID<VertexBuffer > VBO; ID<VertexBuffer > VBO;
ID<NormalBuffer > NBO; ID<NormalBuffer > NBO;
ID<TextureBuffer> TBO;
ID<ElementBuffer> EBO; ID<ElementBuffer> EBO;
const string FilePath; const string FilePath;
VertexList Verticies ; VertexList Verticies ;
VertexList VertNormals ; VertexList VertNormals;
VertexList RAWVertex ; VertexList RAWVertex ;
VertexList VertNormalsRAW; VertexList VertNormalsRAW;
UVList TextureMap ; UVList TextureMap ;
FaceList Faces ; FaceList Faces ;
VIndexList Indicies ; VIndexList Indicies ;
Model(const Ref(string) _filePath) : Model(const Ref(string) _filePath) :
VAO(-1), VAO(-1),
VBO(-1), VBO(-1),
@ -164,17 +181,18 @@ namespace DGL
{ {
using std::cout ; using std::cout ;
using std::endl ; using std::endl ;
using std::get ;
using std::getline ;
using std::ifstream ; using std::ifstream ;
using std::ios ; using std::ios ;
using std::stringstream; using std::stringstream;
using std::getline; using std::ws ;
using std::ws;
using std::get;
ifstream fileBuffer;
fileBuffer.open(FilePath); ifstream fileBuffer; fileBuffer.open(FilePath);
deduce processVertex = [&](Ref(stringstream) _vertexStream) deduce processVertex = [&](Ref(stringstream) _vertexStream)
{ {
@ -206,6 +224,20 @@ namespace DGL
VertNormals.push_back(normal.GetVector()); VertNormals.push_back(normal.GetVector());
}; };
deduce processTexture = [&](Ref(stringstream) _normalStream)
{
VertexGenerator texture; gFloat componentValue;
while (not _normalStream.eof())
{
_normalStream >> componentValue >> ws;
texture.comp.push_back(componentValue);
}
TextureMap.push_back(texture.GetVector2());
};
deduce processFace = [&](Ref(stringstream) _faceStream) deduce processFace = [&](Ref(stringstream) _faceStream)
{ {
FaceGenerator faceMade; gUInt vertexIndex, textureIndex, normalIndex; FaceGenerator faceMade; gUInt vertexIndex, textureIndex, normalIndex;
@ -255,6 +287,8 @@ namespace DGL
Faces.push_back(faceMade.GetFace()); Faces.push_back(faceMade.GetFace());
}; };
if (fileBuffer.is_open()) if (fileBuffer.is_open())
{ {
stringstream stringBuffer; stringstream stringBuffer;
@ -281,6 +315,10 @@ namespace DGL
{ {
processNormals(lineStream); processNormals(lineStream);
} }
else if (lineSig == "vt")
{
processTexture(lineStream);
}
else if (lineSig == "f") else if (lineSig == "f")
{ {
processFace(lineStream); processFace(lineStream);
@ -294,10 +332,39 @@ namespace DGL
throw std::runtime_error("Could not open file to load model."); throw std::runtime_error("Could not open file to load model.");
} }
fileBuffer.close(); fileBuffer.close();
} }
sfn GenerateNormals()
{
VertNormals.resize(Verticies.size());
for (int index = 0; index < Faces.size(); index++)
{
int vertexIndex1 = Faces[index].Vertexes[0],
vertexIndex2 = Faces[index].Vertexes[1],
vertexIndex3 = Faces[index].Vertexes[2];
Vector3 edge1 = Verticies[vertexIndex2] - Verticies[vertexIndex1],
edge2 = Verticies[vertexIndex3] - Verticies[vertexIndex1],
normal = GetDirection(GetCrossNormal(edge1, edge2));
Faces[index].Normals[0] = vertexIndex1;
Faces[index].Normals[1] = vertexIndex2;
Faces[index].Normals[2] = vertexIndex3;
VertNormals[vertexIndex1] = normal;
VertNormals[vertexIndex2] = normal;
VertNormals[vertexIndex3] = normal;
}
}
template<typename Type> template<typename Type>
sfn RoundOff(Type _value, gInt _numDigitsToKeep) -> Type sfn RoundOff(Type _value, gInt _numDigitsToKeep) -> Type
{ {
@ -306,42 +373,7 @@ namespace DGL
return round(_value * Rounder) / Rounder; return round(_value * Rounder) / Rounder;
} }
sfn GenerateNormals()
{
for (int index = 0; index < Faces.size(); index++)
{
int vertexIndex1 = Faces[index].Vertexes[0],
vertexIndex2 = Faces[index].Vertexes[1],
vertexIndex3 = Faces[index].Vertexes[2];
Vector3 edge1 = Verticies[vertexIndex2] - Verticies[vertexIndex1],
edge2 = Verticies[vertexIndex3] - Verticies[vertexIndex2],
normal = GetDirection(GetCrossNormal(edge2, edge1));
normal[0] = normal[0]; // RoundOff(normal[0], 7);
normal[1] = normal[1]; // RoundOff(normal[1], 7);
normal[2] = normal[1]; // RoundOff(normal[2], 7);
bool normalExists = false;
for (int normIndex = 0; normIndex < VertNormals.size(); normIndex++)
{
if (normal == VertNormals[normIndex])
{
normalExists = true;
}
}
if (!normalExists)
{
VertNormals.push_back(normal);
}
}
}
// Hardcoded to only do the verticies and normals for now... // Hardcoded to only do the verticies and normals for now...
sfn Buffer() sfn Buffer()
@ -349,50 +381,16 @@ namespace DGL
GenerateVertexBuffers(Address(VAO), 1); GenerateVertexBuffers(Address(VAO), 1);
GenerateBuffers (Address(VBO), 1); GenerateBuffers (Address(VBO), 1);
GenerateBuffers (Address(NBO), 1); GenerateBuffers (Address(NBO), 1);
//glGenTextures (1, Address(TBO));
GenerateBuffers (Address(EBO), 1); GenerateBuffers (Address(EBO), 1);
/*if (VertNormals.size() == 0) if (VertNormals.size() == 0)
{ {
GenerateNormals(); GenerateNormals();
}*/
/*for (int index = 0; index < Faces.size(); index++)
{
cout << "FaceID: " << index << endl << endl;
for (int vertIndex = 0; vertIndex < 3; vertIndex++)
{
cout << "Vert Index: " << Faces[index].Vertexes[vertIndex] << endl;
cout << "Face Index: " << Faces[index].Normals[vertIndex] << endl;
RAWVertex.push_back
(
Verticies[Faces[index].Vertexes[vertIndex]]
);
RAWVertex.push_back
(
VertNormals[Faces[index].Normals[vertIndex]]
);
}
} }
BindVertexArray(VAO);
BindBuffer(EBufferTarget::VertexAttributes, VBO);
BufferData(Address(RAWVertex[0]), RAWVertex.size() * sizeof(Vector3), EBufferTarget::VertexAttributes, EBufferUsage::StaticDraw);
FormatVertexAttributes<Vector3>(0, EDataType::Float, ZeroOffset(), 3, EBool::False);
EnableVertexAttributeArray(0);
FormatVertexAttributes<Vector3>(1, EDataType::Float, Offset(sizeof(Vector3)), 3, EBool::False);
EnableVertexAttributeArray(1);*/
BindVertexArray(VAO); BindVertexArray(VAO);
BindBuffer(EBufferTarget::VertexAttributes, VBO); BindBuffer(EBufferTarget::VertexAttributes, VBO);
@ -404,6 +402,7 @@ namespace DGL
EnableVertexAttributeArray(0); EnableVertexAttributeArray(0);
if (VertNormals.size() != 0) if (VertNormals.size() != 0)
{ {
BindBuffer(EBufferTarget::VertexAttributes, NBO); BindBuffer(EBufferTarget::VertexAttributes, NBO);
@ -416,6 +415,20 @@ namespace DGL
} }
/*if (TextureMap.size() != 0)
{
glBindTexture(TBO, GL_TEXTURE_2D);
BufferData(Address(TextureMap[0]), TextureMap.size() * sizeof(Vector2), EBufferTarget::TextureData, EBufferUsage::StaticDraw);
FormatVertexAttributes<Vector2>(2, EDataType::Float, ZeroOffset(), 2, EBool::False);
EnableVertexAttributeArray(2);
}*/
BindBuffer(EBufferTarget::VertexIndices, EBO); BindBuffer(EBufferTarget::VertexIndices, EBO);
BufferData(Address(Faces[0]), Faces.size() * sizeof(Face), EBufferTarget::VertexIndices, EBufferUsage::StaticDraw); BufferData(Address(Faces[0]), Faces.size() * sizeof(Face), EBufferTarget::VertexIndices, EBufferUsage::StaticDraw);
@ -427,13 +440,11 @@ namespace DGL
{ {
BindVertexArray(VAO); BindVertexArray(VAO);
BindBuffer(EBufferTarget::VertexAttributes, VBO);
gInt Size; GetBufferParameterIV(EBufferTarget::VertexIndices, EBufferParam::Size, Address(Size)); gInt Size; GetBufferParameterIV(EBufferTarget::VertexIndices, EBufferParam::Size, Address(Size));
Size /= sizeof(gInt); Size /= sizeof(gUInt);
//DrawArrays(EPrimitives::Triangles, 0, RAWVertex.size());
DrawElements(EPrimitives::Triangles, Size, EDataType::UnsignedInt, ZeroOffset()); DrawElements(EPrimitives::Triangles, Size, EDataType::UnsignedInt, ZeroOffset());

View File

@ -488,10 +488,12 @@ namespace DGL
EnableVertexAttributeArray(0); EnableVertexAttributeArray(0);
EnableVertexAttributeArray(1); EnableVertexAttributeArray(1);
//EnableVertexAttributeArray(2);
} }
sfn Stop() sfn Stop()
{ {
//DisableVertexAttributeArray(2);
DisableVertexAttributeArray(1); DisableVertexAttributeArray(1);
DisableVertexAttributeArray(0); DisableVertexAttributeArray(0);
} }

View File

@ -386,7 +386,7 @@ namespace Execution
//RAW_RotateLitCube(PhysicsDelta); //RAW_RotateLitCube(PhysicsDelta);
RAW_LightRotate(PhysicsDelta); RAW_UpdateLightTransform(PhysicsDelta);
ProperCube::Rotate(PhysicsDelta); ProperCube::Rotate(PhysicsDelta);

View File

@ -2,12 +2,10 @@
out vec4 FragColor; out vec4 FragColor;
in vec3 FragPosition ; in vec3 FragPosition ;
in vec3 Normal ; in vec3 Normal ;
in vec3 LightViewPosition; in vec3 LightViewPosition;
in vec3 LightRawPos; in vec3 LightRawPos ;
uniform vec3 ObjectColor; uniform vec3 ObjectColor;
uniform vec3 LightColor ; uniform vec3 LightColor ;
@ -25,7 +23,7 @@ void main()
// Diffuse // Diffuse
vec3 direction = normalize(Normal ); vec3 direction = normalize(Normal );
vec3 lightDirection = normalize(LightViewPosition - FragPosition); vec3 lightDirection = normalize(LightViewPosition - FragPosition);
float diffuseStrength = max(dot(direction, lightDirection), 0.0); float diffuseStrength = max(dot(direction, lightDirection), 0.0);
@ -35,8 +33,8 @@ void main()
float specularStrength = 0.5; float specularStrength = 0.5;
vec3 viewDirection = normalize(ViewPosition - FragPosition); // vec3 viewDirection = normalize(ViewPosition - FragPosition);
// vec3 viewDirection = normalize(-FragPosition); vec3 viewDirection = normalize(-FragPosition);
vec3 reflectionDirection = reflect(-lightDirection, direction); vec3 reflectionDirection = reflect(-lightDirection, direction);

View File

@ -2,9 +2,7 @@
layout (location = 0) in vec3 VertPosition; layout (location = 0) in vec3 VertPosition;
layout (location = 1) in vec3 VertNormal ; layout (location = 1) in vec3 VertNormal ;
layout (location = 2) in vec3 VertTexture ;
varying vec3 vPosInterp;
varying vec3 vNormalInterp;
out vec3 FragPosition ; out vec3 FragPosition ;
out vec3 Normal ; out vec3 Normal ;

View File

@ -18,6 +18,11 @@ using DGL::LinearColor;
using DGL::Vector3; using DGL::Vector3;
using DGL::ZeroOffset; using DGL::ZeroOffset;
struct RAWBS
{
float bullshit[6 * 6 * 2 *3];
};
float vertices[] = { float vertices[] = {
-0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
@ -356,7 +361,7 @@ sfn RAW_RenderCube()
LinearColor CoralColor(1.0f, 0.5f, 0.31f, 1.0f); LinearColor CoralColor(1.0f, 0.5f, 0.31f, 1.0f);
LinearColor LightColor(1.0f, 1.0f, 1.0f , 1.0f); LinearColor LightColor(1.0f, 1.0f, 1.0f , 1.0f);
Vector3 LightPosition(1.2f, 2.0f, 0.5f); Vector3 LightPosition(1.2f, 1.0f, 1.75f);
Vector3 LightScale = Vector3(0.2f); Vector3 LightScale = Vector3(0.2f);
@ -383,10 +388,8 @@ sfn RAW_MakeLightVAO()
LightTransform = DGL::Scale (LightTransform, LightScale ); LightTransform = DGL::Scale (LightTransform, LightScale );
} }
sfn RAW_LightRotate(gFloat _delta) sfn RAW_UpdateLightTransform(gFloat _delta)
{ {
//LightTransform = DGL::Rotate(LightTransform, 0.1f, Vector3(1, 0, 0));
static bool test = true; static bool test = true;
LightTransform = CoordSpace(1.0f); LightTransform = CoordSpace(1.0f);
@ -478,10 +481,12 @@ sfn RAW_RenderLitCube(CoordSpace _projection, CoordSpace _viewport)
} }
using DGL::NormalBuffer;
namespace ProperCube namespace ProperCube
{ {
Model model("cube.obj"); Model model("topology.obj");
Vector3 position = Vector3(0.0f); Vector3 position = Vector3(0.0f);
@ -489,9 +494,11 @@ namespace ProperCube
CoordSpace transform = Matrix4x4(1.0f); CoordSpace transform = Matrix4x4(1.0f);
sfn Rotate(gFloat _delta) sfn Rotate(gFloat _delta)
{ {
//transform = DGL::Rotate(transform, 1.5f * _delta, Vector3(0, 1, 0)); transform = DGL::Rotate(transform, 0.75f * _delta, Vector3(0, 1, 0));
} }
sfn Render(Ref(CoordSpace) _projection, Ref(CoordSpace) _viewport, Ref(Vector3) _cameraPosition) sfn Render(Ref(CoordSpace) _projection, Ref(CoordSpace) _viewport, Ref(Vector3) _cameraPosition)
@ -511,21 +518,17 @@ namespace ProperCube
_cameraPosition _cameraPosition
); );
//DGL::Basic_LightingShader::Use(screenspaceTransform, color, lightColor);
model.Render(); model.Render();
DGL::Basic_LightingShader::Stop();
DGL::PhongShader::Stop(); DGL::PhongShader::Stop();
} }
using DGL::Offset;
sfn Setup() sfn Setup()
{ {
model.Load(); model.Load();
//model.GenVN();
model.Buffer(); model.Buffer();
//transform = DGL::Scale(transform, Vector3(0.01)); //transform = DGL::Scale(transform, Vector3(0.01));

46
blenderCube.obj Normal file
View File

@ -0,0 +1,46 @@
# Blender v2.80 (sub 74) OBJ File: ''
# www.blender.org
mtllib blenderCube.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.375000 0.250000
vt 0.625000 0.250000
vt 0.625000 0.500000
vt 0.375000 0.500000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.375000 0.750000
vt 0.125000 0.750000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
usemtl Material
s off
f 1/1/1 5/2/1 7/3/1 3/4/1
f 4/5/2 3/6/2 7/7/2 8/8/2
f 8/8/3 7/7/3 5/9/3 6/10/3
f 6/10/4 2/11/4 4/12/4 8/13/4
f 2/14/5 1/15/5 3/16/5 4/17/5
f 6/18/6 5/19/6 1/20/6 2/11/6

View File

@ -2,9 +2,6 @@
# #
# #
mtllib cube.mtl
# #
# cube Mesh # cube Mesh
# #