port from perforce
This commit is contained in:
1612
evoke-64k/ev15-4k/4klang.asm
Normal file
1612
evoke-64k/ev15-4k/4klang.asm
Normal file
File diff suppressed because it is too large
Load Diff
22
evoke-64k/ev15-4k/4klang.h
Normal file
22
evoke-64k/ev15-4k/4klang.h
Normal file
@@ -0,0 +1,22 @@
|
||||
// some useful song defines for 4klang
|
||||
#define SAMPLE_RATE 44100
|
||||
#define BPM 75.000000
|
||||
#define MAX_INSTRUMENTS 12
|
||||
#define MAX_PATTERNS 48
|
||||
#define PATTERN_SIZE_SHIFT 4
|
||||
#define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT)
|
||||
#define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE)
|
||||
#define SAMPLES_PER_TICK 8820
|
||||
#define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS)
|
||||
#define POLYPHONY 2
|
||||
#define FLOAT_32BIT
|
||||
#define SAMPLE_TYPE float
|
||||
|
||||
#define WINDOWS_OBJECT
|
||||
|
||||
// declaration of the external synth render function, you'll always need that
|
||||
extern "C" void __stdcall _4klang_render(void*);
|
||||
// declaration of the external envelope buffer. access only if you're song was exported with that option
|
||||
extern "C" float _4klang_envelope_buffer;
|
||||
// declaration of the external note buffer. access only if you're song was exported with that option
|
||||
extern "C" int _4klang_note_buffer;
|
||||
1057
evoke-64k/ev15-4k/4klang.inc
Normal file
1057
evoke-64k/ev15-4k/4klang.inc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
evoke-64k/ev15-4k/4klang.obj
Normal file
BIN
evoke-64k/ev15-4k/4klang.obj
Normal file
Binary file not shown.
BIN
evoke-64k/ev15-4k/8klang.merge
Normal file
BIN
evoke-64k/ev15-4k/8klang.merge
Normal file
Binary file not shown.
BIN
evoke-64k/ev15-4k/GlU32.Lib
Normal file
BIN
evoke-64k/ev15-4k/GlU32.Lib
Normal file
Binary file not shown.
BIN
evoke-64k/ev15-4k/OpenGL32.Lib
Normal file
BIN
evoke-64k/ev15-4k/OpenGL32.Lib
Normal file
Binary file not shown.
364
evoke-64k/ev15-4k/Shaders.cpp
Normal file
364
evoke-64k/ev15-4k/Shaders.cpp
Normal file
@@ -0,0 +1,364 @@
|
||||
#include "Shaders.h"
|
||||
|
||||
//#define DEBUG_COMPRESSED_SHADER
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
PFNGLCREATESHADERPROC glCreateShader = NULL;
|
||||
PFNGLSHADERSOURCEPROC glShaderSource = NULL;
|
||||
PFNGLCOMPILESHADERPROC glCompileShader = NULL;
|
||||
PFNGLGETSHADERIVPROC glGetShaderiv = NULL;
|
||||
PFNGLGETPROGRAMIVPROC glGetProgramiv = NULL;
|
||||
PFNGLCREATEPROGRAMPROC glCreateProgram = NULL;
|
||||
PFNGLATTACHSHADERPROC glAttachShader = NULL;
|
||||
PFNGLLINKPROGRAMPROC glLinkProgram = NULL;
|
||||
PFNGLUSEPROGRAMPROC glUseProgram = NULL;
|
||||
PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog = NULL;
|
||||
PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog = NULL;
|
||||
|
||||
|
||||
void useProgram(GLhandleARB ah_Program)
|
||||
{
|
||||
glUseProgram(ah_Program);
|
||||
}
|
||||
|
||||
|
||||
void initShaders()
|
||||
{
|
||||
glCreateShader = (PFNGLCREATESHADERPROC)myGetProcAddress("glCreateShader");
|
||||
glShaderSource = (PFNGLSHADERSOURCEPROC)myGetProcAddress("glShaderSource");
|
||||
glCompileShader = (PFNGLCOMPILESHADERPROC)myGetProcAddress("glCompileShader");
|
||||
glGetShaderiv = (PFNGLGETSHADERIVPROC)myGetProcAddress("glGetShaderiv");
|
||||
glGetProgramiv = (PFNGLGETPROGRAMIVPROC)myGetProcAddress("glGetProgramiv");
|
||||
glCreateProgram = (PFNGLCREATEPROGRAMPROC)myGetProcAddress("glCreateProgram");
|
||||
glAttachShader = (PFNGLATTACHSHADERPROC)myGetProcAddress("glAttachShader");
|
||||
glLinkProgram = (PFNGLLINKPROGRAMPROC)myGetProcAddress("glLinkProgram");
|
||||
glUseProgram = (PFNGLUSEPROGRAMPROC)myGetProcAddress("glUseProgram");
|
||||
glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)myGetProcAddress("glGetShaderInfoLog");
|
||||
glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)myGetProcAddress("glGetProgramInfoLog");
|
||||
|
||||
if (!(glCreateShader && glShaderSource && glCompileShader && glGetShaderiv && glGetProgramiv && glCreateProgram && glAttachShader && glLinkProgram && glUseProgram && glGetShaderInfoLog && glGetProgramInfoLog))
|
||||
{
|
||||
std::cerr << "Some shader functions are not available!" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
#include <sstream>
|
||||
#include <fstream>
|
||||
|
||||
std::string ReplaceString(const std::string &stringSearchString, const std::string &stringReplaceString, std::string stringStringToReplace)
|
||||
{
|
||||
std::string::size_type pos = stringStringToReplace.find(stringSearchString, 0);
|
||||
int intLengthSearch = stringSearchString.length();
|
||||
int intLengthReplacment = stringReplaceString.length();
|
||||
|
||||
while(std::string::npos != pos)
|
||||
{
|
||||
stringStringToReplace.replace(pos, intLengthSearch, stringReplaceString);
|
||||
pos = stringStringToReplace.find(stringSearchString, pos + intLengthReplacment);
|
||||
}
|
||||
|
||||
return stringStringToReplace;
|
||||
}
|
||||
|
||||
std::string MakeFileName( const char* as_FileName, int ShaderID, bool bDebug )
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << as_FileName << "_" << ShaderID;
|
||||
if( bDebug )
|
||||
{
|
||||
ss << "_dbg";
|
||||
}
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
void CreateSubShader( const char* as_FileName, int ShaderID, bool bDebug )
|
||||
{
|
||||
char* ls_ShaderSource = textFileRead(as_FileName);
|
||||
std::string strData= ls_ShaderSource;
|
||||
std::string strNewData;
|
||||
bool bRemove= false;
|
||||
for( size_t i= 0; i < strData.size(); ++i )
|
||||
{
|
||||
bool bEndRemove= false;
|
||||
if( strData[ i ] == '@' )
|
||||
{
|
||||
if( i + 2 >= strData.size() )
|
||||
{
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
if( strData[ i ] == '@' )
|
||||
{
|
||||
bRemove= false;
|
||||
}
|
||||
else if( strData[ i ] == 'D' )
|
||||
{
|
||||
bRemove= !bDebug;
|
||||
}
|
||||
else
|
||||
{
|
||||
int ID= (int)(strData[ i ] - '0');
|
||||
bRemove= ID!=ShaderID;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if( !bRemove || strData[ i ] == 10 || strData[ i ] == 13)
|
||||
{
|
||||
strNewData+= strData[ i ];
|
||||
}
|
||||
}
|
||||
|
||||
std::string strFileOut= MakeFileName( as_FileName, ShaderID, bDebug );
|
||||
std::ofstream ofs(strFileOut.c_str());
|
||||
|
||||
// some Renaming
|
||||
/*strNewData= ReplaceString( "rayDir","q", strNewData);
|
||||
strNewData= ReplaceString( "cRes","b", strNewData);
|
||||
strNewData= ReplaceString( "cFac","a", strNewData);
|
||||
strNewData= ReplaceString( "CurStep","d", strNewData);
|
||||
strNewData= ReplaceString( "CurStep","d", strNewData);
|
||||
strNewData= ReplaceString( "rotate","r", strNewData);
|
||||
strNewData= ReplaceString( "repeatHex","sh", strNewData);
|
||||
strNewData= ReplaceString( "repeat","s", strNewData);
|
||||
strNewData= ReplaceString( "pi2","P", strNewData);
|
||||
strNewData= ReplaceString( "sqrtOf075","Q", strNewData);
|
||||
strNewData= ReplaceString( "EndlessBar","O", strNewData);
|
||||
strNewData= ReplaceString( "CurTime","R", strNewData);
|
||||
strNewData= ReplaceString( "CurScene","S", strNewData);
|
||||
strNewData= ReplaceString( "torus","T", strNewData);
|
||||
strNewData= ReplaceString( "noise3D","N", strNewData);
|
||||
strNewData= ReplaceString( "smoothnoise","M", strNewData);*/
|
||||
|
||||
ofs << strNewData;
|
||||
}
|
||||
|
||||
void CreateAllSubShader( const char* as_FileName )
|
||||
{
|
||||
for( int i= 0; i < MAX_SHADER_ID; ++i )
|
||||
{
|
||||
CreateSubShader( as_FileName, i, true );
|
||||
CreateSubShader( as_FileName, i, false );
|
||||
}
|
||||
}
|
||||
|
||||
void PrintErrors()
|
||||
{
|
||||
GLenum lr_Error = GL_NO_ERROR;
|
||||
int li_ErrorCount = 5;
|
||||
do
|
||||
{
|
||||
lr_Error = glGetError();
|
||||
if (lr_Error != GL_NO_ERROR)
|
||||
{
|
||||
li_ErrorCount--;
|
||||
char* ls_ErrorString = (char*)gluErrorString(lr_Error);
|
||||
if (ls_ErrorString != 0)
|
||||
std::cout << "OPENGL :: ERROR " << ls_ErrorString << std::endl;
|
||||
}
|
||||
if (li_ErrorCount == 0)
|
||||
{
|
||||
std::cout << "OPENGL :: ERROR Too many errors!" << std::endl;
|
||||
break;
|
||||
}
|
||||
} while (lr_Error != GL_NO_ERROR);
|
||||
}
|
||||
|
||||
|
||||
GLhandleARB createVertexShader(const char* as_FileName)
|
||||
{
|
||||
GLhandleARB lh_Shader = 0;
|
||||
|
||||
char* ls_ShaderSource = textFileRead(as_FileName);
|
||||
|
||||
if (ls_ShaderSource == NULL)
|
||||
{
|
||||
std::cerr << "Error reading file: " << as_FileName << std::endl;
|
||||
return lh_Shader;
|
||||
}
|
||||
|
||||
lh_Shader = glCreateShader(GL_VERTEX_SHADER);
|
||||
|
||||
glShaderSource(lh_Shader, 1, (const char**)&ls_ShaderSource, NULL);
|
||||
glCompileShader(lh_Shader);
|
||||
|
||||
free(ls_ShaderSource);
|
||||
|
||||
int li_Status = 0;
|
||||
glGetShaderiv(lh_Shader, GL_COMPILE_STATUS, &li_Status);
|
||||
|
||||
if (li_Status == GL_FALSE)
|
||||
{
|
||||
std::cerr << "Error compiling vertex shader: " << as_FileName << std::endl;
|
||||
printShaderInfoLog(lh_Shader);
|
||||
}
|
||||
|
||||
return lh_Shader;
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG_COMPRESSED_SHADER
|
||||
#include "shader_code.h"
|
||||
#endif
|
||||
|
||||
GLhandleARB createFragmentShader(const char* as_FileName, int ShaderID, bool bDebug)
|
||||
{
|
||||
CreateAllSubShader( as_FileName );
|
||||
|
||||
GLhandleARB lh_Shader = 0;
|
||||
|
||||
char* ls_ShaderSource = textFileRead(MakeFileName(as_FileName, ShaderID, bDebug).c_str());
|
||||
if (ls_ShaderSource == NULL)
|
||||
{
|
||||
std::cerr << "Error reading file: " << as_FileName << std::endl;
|
||||
return lh_Shader;
|
||||
}
|
||||
|
||||
lh_Shader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
|
||||
glShaderSource(lh_Shader, 1, (const char**)&ls_ShaderSource, NULL);
|
||||
#ifdef DEBUG_COMPRESSED_SHADER
|
||||
glShaderSource(lh_Shader, 1, (const char**)&mark_fs, NULL);
|
||||
#endif
|
||||
glCompileShader(lh_Shader);
|
||||
|
||||
int li_Status = 0;
|
||||
|
||||
glGetShaderiv(lh_Shader, GL_COMPILE_STATUS, &li_Status);
|
||||
|
||||
if (li_Status == GL_FALSE)
|
||||
{
|
||||
std::cerr << "Error compiling fragment shader: " << as_FileName << std::endl;
|
||||
printShaderInfoLog(lh_Shader);
|
||||
}
|
||||
|
||||
free(ls_ShaderSource);
|
||||
|
||||
return lh_Shader;
|
||||
}
|
||||
|
||||
|
||||
GLhandleARB createProgram(GLhandleARB ah_VertexShader, GLhandleARB ah_FragmentShader)
|
||||
{
|
||||
GLhandleARB lh_Program = 0;
|
||||
|
||||
if (ah_VertexShader + ah_FragmentShader <= 1)
|
||||
{
|
||||
std::cerr << "Cannot create program." << std::endl;
|
||||
return lh_Program;
|
||||
}
|
||||
|
||||
lh_Program = glCreateProgram();
|
||||
|
||||
glAttachShader(lh_Program, ah_VertexShader);
|
||||
glAttachShader(lh_Program, ah_FragmentShader);
|
||||
glLinkProgram(lh_Program);
|
||||
|
||||
int li_Status = 0;
|
||||
|
||||
glGetProgramiv(lh_Program, GL_LINK_STATUS, &li_Status);
|
||||
|
||||
if (li_Status == GL_FALSE)
|
||||
{
|
||||
std::cerr << "Error linking shaders." << std::endl;
|
||||
printProgramInfoLog(lh_Program);
|
||||
}
|
||||
|
||||
return lh_Program;
|
||||
}
|
||||
|
||||
|
||||
char* textFileRead(const char* as_FileName)
|
||||
{
|
||||
FILE* lh_File;
|
||||
char* ls_Content = NULL;
|
||||
size_t li_Count = 0;
|
||||
|
||||
if (as_FileName != NULL)
|
||||
{
|
||||
fopen_s(&lh_File, as_FileName, "rt");
|
||||
|
||||
if (lh_File != NULL)
|
||||
{
|
||||
fseek(lh_File, 0, SEEK_END);
|
||||
li_Count = ftell(lh_File);
|
||||
rewind(lh_File);
|
||||
|
||||
if (li_Count > 0)
|
||||
{
|
||||
ls_Content = (char*) malloc(sizeof(char) * (li_Count + 1));
|
||||
li_Count = fread(ls_Content, sizeof(char), li_Count, lh_File);
|
||||
ls_Content[li_Count] = '\0';
|
||||
}
|
||||
|
||||
fclose(lh_File);
|
||||
}
|
||||
}
|
||||
|
||||
return ls_Content;
|
||||
}
|
||||
|
||||
|
||||
void printShaderInfoLog(GLhandleARB ah_Shader)
|
||||
{
|
||||
int li_InfologLength = 0;
|
||||
int li_CharsWritten = 0;
|
||||
char* li_InfoLog;
|
||||
|
||||
glGetShaderiv(ah_Shader, GL_INFO_LOG_LENGTH, &li_InfologLength);
|
||||
|
||||
if (li_InfologLength > 0)
|
||||
{
|
||||
li_InfoLog = (char*) malloc(li_InfologLength);
|
||||
|
||||
glGetShaderInfoLog(ah_Shader, li_InfologLength, &li_CharsWritten, li_InfoLog);
|
||||
|
||||
std::cerr << li_InfoLog << std::endl;
|
||||
free(li_InfoLog);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void printProgramInfoLog(GLhandleARB ah_Program)
|
||||
{
|
||||
int li_InfologLength = 0;
|
||||
int li_CharsWritten = 0;
|
||||
char* ls_InfoLog;
|
||||
|
||||
glGetProgramiv(ah_Program, GL_INFO_LOG_LENGTH, &li_InfologLength);
|
||||
|
||||
if (li_InfologLength > 0)
|
||||
{
|
||||
ls_InfoLog = (char *)malloc(li_InfologLength);
|
||||
|
||||
glGetProgramInfoLog(ah_Program, li_InfologLength, &li_CharsWritten, ls_InfoLog);
|
||||
|
||||
std::cerr << ls_InfoLog << std::endl;
|
||||
free(ls_InfoLog);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool printShaderStatistics()
|
||||
{
|
||||
if (GL_VERSION_2_1) std::cout << "Supports OpenGL 2.1. " << std::endl;
|
||||
else if (GL_VERSION_2_0) std::cout << "Supports OpenGL 2.0. " << std::endl;
|
||||
else if (GL_VERSION_1_5) std::cout << "Supports OpenGL 1.5. " << std::endl;
|
||||
else if (GL_VERSION_1_4) std::cout << "Supports OpenGL 1.4. " << std::endl;
|
||||
else if (GL_VERSION_1_3) std::cout << "Supports OpenGL 1.3. " << std::endl;
|
||||
else if (GL_VERSION_1_2) std::cout << "Supports OpenGL 1.2. " << std::endl;
|
||||
else if (GL_VERSION_1_1) std::cout << "Supports OpenGL 1.1. " << std::endl;
|
||||
|
||||
if (GL_ARB_shader_objects && GL_ARB_vertex_shader && GL_ARB_fragment_shader)
|
||||
{
|
||||
std::cout << "Status: Using GLSL " << glGetString(GL_SHADING_LANGUAGE_VERSION_ARB) << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "No GLSL support!" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
21
evoke-64k/ev15-4k/Shaders.h
Normal file
21
evoke-64k/ev15-4k/Shaders.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
#define MAX_SHADER_ID 4
|
||||
|
||||
#include <windows.h>
|
||||
#include <iostream>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
#include "glext.h"
|
||||
#define myGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
|
||||
|
||||
void initShaders();
|
||||
GLhandleARB createVertexShader(const char* as_FileName);
|
||||
GLhandleARB createFragmentShader(const char* as_FileName, int ShaderID, bool bDebug);
|
||||
GLhandleARB createProgram(GLhandleARB ah_VertexShader, GLhandleARB ah_FragmentShader);
|
||||
void PrintErrors();
|
||||
void useProgram(GLhandleARB ah_Program);
|
||||
char* textFileRead(const char* as_FileName);
|
||||
void printShaderInfoLog(GLhandleARB ah_Shader);
|
||||
void printProgramInfoLog(GLhandleARB ah_Program);
|
||||
bool printShaderStatistics();
|
||||
369
evoke-64k/ev15-4k/bp4k.vcproj
Normal file
369
evoke-64k/ev15-4k/bp4k.vcproj
Normal file
@@ -0,0 +1,369 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Name="bp4k"
|
||||
ProjectGUID="{213903DE-E40A-4D23-9310-E520AC2B412E}"
|
||||
RootNamespace="bp4k"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)bin"
|
||||
IntermediateDirectory="$(SolutionDir)obj\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="0"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
CallingConvention="2"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="Gdi32.lib user32.lib opengl32.lib winmm.lib glu32.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName)_$(ConfigurationName).exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories=""$(ProjectDir)""
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
EntryPointSymbol="main"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)bin"
|
||||
IntermediateDirectory="$(SolutionDir)obj\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="0"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine="rem minify\shader_minifier.exe "mark.fs_0" -o mark_0.h -v --no-renaming
rem minify\shader_minifier.exe "mark.fs_1" -o mark_1.h -v --no-renaming
rem minify\shader_minifier.exe "mark.fs_2" -o mark_2.h -v --no-renaming
rem minify\shader_minifier.exe "mark.fs_0" -o mark_small.h -v
"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="2"
|
||||
WholeProgramOptimization="false"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="0"
|
||||
DebugInformationFormat="3"
|
||||
CallingConvention="2"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/CRINKLER"
|
||||
AdditionalDependencies="Gdi32.lib user32.lib opengl32.lib winmm.lib libcmt.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName)_$(ConfigurationName).exe"
|
||||
AdditionalLibraryDirectories=""$(ProjectDir)""
|
||||
GenerateManifest="false"
|
||||
ManifestFile=""
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
LinkTimeCodeGeneration="0"
|
||||
EntryPointSymbol="main"
|
||||
TargetMachine="1"
|
||||
ErrorReporting="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Compress (Slow)|Win32"
|
||||
OutputDirectory="$(SolutionDir)bin"
|
||||
IntermediateDirectory="$(SolutionDir)obj\$(ProjectName)_$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="0"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
CommandLine=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalOptions="/QIfist"
|
||||
Optimization="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="2"
|
||||
WholeProgramOptimization="false"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
ExceptionHandling="0"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
EnableFunctionLevelLinking="false"
|
||||
FloatingPointModel="2"
|
||||
RuntimeTypeInfo="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="0"
|
||||
DebugInformationFormat="0"
|
||||
CallingConvention="2"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/CRINKLER /COMPMODE:SLOW /ORDERTRIES:4000 /HASHTRIES:300 /UNSAFEIMPORT /TRUNCATEFLOATS:24 /HASHSIZE:200 /REPORT:report.html /RANGE:opengl32 /PROGRESSGUI /TRANSFORM:CALLS"
|
||||
AdditionalDependencies="opengl32.lib winmm.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName)_$(ConfigurationName).exe"
|
||||
AdditionalLibraryDirectories=""$(ProjectDir)""
|
||||
GenerateManifest="false"
|
||||
ManifestFile=""
|
||||
GenerateDebugInformation="false"
|
||||
SubSystem="2"
|
||||
LinkTimeCodeGeneration="0"
|
||||
EntryPointSymbol="main"
|
||||
TargetMachine="1"
|
||||
ErrorReporting="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\main.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Shaders.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\synth.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\glext.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\release.h"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description=""
|
||||
CommandLine=""
|
||||
AdditionalDependencies=""
|
||||
Outputs=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Compress (Slow)|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description=""
|
||||
CommandLine=""
|
||||
AdditionalDependencies=""
|
||||
Outputs=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Shaders.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\small.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\synth.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath=".\4klang.obj"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\generic.vs"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\mark.fs"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
233
evoke-64k/ev15-4k/bp4k.vcxproj
Normal file
233
evoke-64k/ev15-4k/bp4k.vcxproj
Normal file
@@ -0,0 +1,233 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Compress (Slow)|Win32">
|
||||
<Configuration>Compress (Slow)</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{213903DE-E40A-4D23-9310-E520AC2B412E}</ProjectGuid>
|
||||
<RootNamespace>bp4k</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v100</PlatformToolset>
|
||||
<CharacterSet>NotSet</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
<IntDir>$(SolutionDir)obj\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>$(ProjectName)_$(Configuration)</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
<IntDir>$(SolutionDir)obj\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<TargetName>$(ProjectName)_$(Configuration)</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">
|
||||
<OutDir>$(SolutionDir)bin\</OutDir>
|
||||
<IntDir>$(SolutionDir)obj\$(ProjectName)_$(Configuration)\</IntDir>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<TargetName>$(ProjectName)_$(Configuration)</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<CompileAsManaged>false</CompileAsManaged>
|
||||
<CompileAsWinRT>false</CompileAsWinRT>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>Gdi32.lib;user32.lib;opengl32.lib;winmm.lib;glu32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(ProjectName)_$(Configuration).exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EntryPointSymbol>main</EntryPointSymbol>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command>rem minify\shader_minifier.exe "mark.fs_0" -o mark_0.h -v --no-renaming
|
||||
rem minify\shader_minifier.exe "mark.fs_1" -o mark_1.h -v --no-renaming
|
||||
rem minify\shader_minifier.exe "mark.fs_2" -o mark_2.h -v --no-renaming
|
||||
rem minify\shader_minifier.exe "mark.fs_0" -o mark_small.h -v
|
||||
</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling />
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
|
||||
<AdditionalOptions>/QIfist %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>Gdi32.lib;user32.lib;opengl32.lib;winmm.lib;libcmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(ProjectName)_$(Configuration).exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ManifestFile />
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LinkTimeCodeGeneration />
|
||||
<EntryPointSymbol>main</EntryPointSymbol>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<LinkErrorReporting />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">
|
||||
<PreBuildEvent>
|
||||
<Command />
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<CompileAsManaged>false</CompileAsManaged>
|
||||
<CompileAsWinRT>false</CompileAsWinRT>
|
||||
<MultiProcessorCompilation>false</MultiProcessorCompilation>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
|
||||
<StringPooling>true</StringPooling>
|
||||
<AdditionalOptions>/QIfist %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>opengl32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(ProjectName)_$(Configuration).exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(ProjectDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ManifestFile />
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<LinkTimeCodeGeneration />
|
||||
<EntryPointSymbol>main</EntryPointSymbol>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<LinkErrorReporting />
|
||||
<AdditionalOptions>/CRINKLER /COMPMODE:SLOW /ORDERTRIES:4000 /HASHTRIES:300 /UNSAFEIMPORT /TRUNCATEFLOATS:24 /HASHSIZE:200 /REPORT:report.html /RANGE:opengl32 /PROGRESSGUI /TRANSFORM:CALLS /UNALIGNCODE %(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.compress.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">false</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main_rel.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Shaders.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="4klang.h" />
|
||||
<ClInclude Include="glext.h" />
|
||||
<ClInclude Include="mark_small.h" />
|
||||
<ClInclude Include="Shaders.h" />
|
||||
<ClInclude Include="synth.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="4klang.asm">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">yasm-1.2.0-win32.exe -f win32 -o 4klang.obj 4klang.asm</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">Compiling 4klang...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">4klang.obj</Outputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Compress (Slow)|Win32'">4klang.inc</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">yasm-1.2.0-win32.exe -f win32 -o 4klang.obj 4klang.asm</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compiling 4klang...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4klang.obj</Outputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4klang.inc</AdditionalInputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">yasm-1.2.0-win32.exe -f win32 -o 4klang.obj 4klang.asm</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compiling 4klang...</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4klang.obj</Outputs>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4klang.inc</AdditionalInputs>
|
||||
</CustomBuild>
|
||||
<None Include="4klang.inc" />
|
||||
<None Include="generic.vs">
|
||||
<DeploymentContent>true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="mark.fs" />
|
||||
<None Include="mark.fs_0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Object Include="4klang.obj" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
64
evoke-64k/ev15-4k/bp4k.vcxproj.filters
Normal file
64
evoke-64k/ev15-4k/bp4k.vcxproj.filters
Normal file
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Shaders.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.compress.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main_rel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="glext.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Shaders.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="synth.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="4klang.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mark_small.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="generic.vs" />
|
||||
<None Include="mark.fs" />
|
||||
<None Include="mark.fs_0" />
|
||||
<None Include="4klang.inc">
|
||||
<Filter>Header Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="4klang.asm">
|
||||
<Filter>Source Files</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Object Include="4klang.obj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
6
evoke-64k/ev15-4k/bp4k.vcxproj.user
Normal file
6
evoke-64k/ev15-4k/bp4k.vcxproj.user
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ShowAllFiles>false</ShowAllFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
16
evoke-64k/ev15-4k/build-all.cmd
Normal file
16
evoke-64k/ev15-4k/build-all.cmd
Normal file
@@ -0,0 +1,16 @@
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
|
||||
call "build.cmd" 0.125f 1280 1024
|
||||
call "build.cmd" 0.166f 800 600 W
|
||||
call "build.cmd" 0.15f 1024 768
|
||||
call "build.cmd" 0.166f 1280 960
|
||||
call "build.cmd" 0.15f 1400 1050
|
||||
call "build.cmd" 0.15f 1600 1200
|
||||
call "build.cmd" 0.166f 800 600
|
||||
call "build.cmd" 0.277f 1400 900
|
||||
call "build.cmd" 0.3f 1280 800
|
||||
call "build.cmd" 0.31f 1680 1050
|
||||
call "build.cmd" 0.305f 1920 1200
|
||||
call "build.cmd" 0.375f 1280 720
|
||||
call "build.cmd" 0.375f 1920 1080
|
||||
call "build.cmd" 0.44f 960 510 W
|
||||
|
||||
9
evoke-64k/ev15-4k/build.cmd
Normal file
9
evoke-64k/ev15-4k/build.cmd
Normal file
@@ -0,0 +1,9 @@
|
||||
IF [%4]==[W] GOTO :windowed
|
||||
:fullscreen
|
||||
cl /c @switches.txt /DASPECTOFFSET=%1 /DSCREENWIDTH=%2 /DSCREENHEIGHT=%3 main.compress.cpp
|
||||
link @linkparams.txt /out:"final\bf_metallic_%2x%3.exe"
|
||||
goto :end
|
||||
:windowed
|
||||
cl /c @switches.txt /DASPECTOFFSET=%1 /DSCREENWIDTH=%2 /DSCREENHEIGHT=%3 /DWINDOWED main.compress.cpp
|
||||
link @linkparams.txt /out:"final\bf_metallic_%2x%3_window.exe"
|
||||
:end
|
||||
1
evoke-64k/ev15-4k/do_minify.bat
Normal file
1
evoke-64k/ev15-4k/do_minify.bat
Normal file
@@ -0,0 +1 @@
|
||||
shader_minifier.exe "mark.fs_0" -o mark_small.h -v
|
||||
25
evoke-64k/ev15-4k/evk15_4k.sln
Normal file
25
evoke-64k/ev15-4k/evk15_4k.sln
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bp4k", "bp4k.vcxproj", "{213903DE-E40A-4D23-9310-E520AC2B412E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Compress (Slow)|Win32 = Compress (Slow)|Win32
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{213903DE-E40A-4D23-9310-E520AC2B412E}.Compress (Slow)|Win32.ActiveCfg = Compress (Slow)|Win32
|
||||
{213903DE-E40A-4D23-9310-E520AC2B412E}.Compress (Slow)|Win32.Build.0 = Compress (Slow)|Win32
|
||||
{213903DE-E40A-4D23-9310-E520AC2B412E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{213903DE-E40A-4D23-9310-E520AC2B412E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{213903DE-E40A-4D23-9310-E520AC2B412E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{213903DE-E40A-4D23-9310-E520AC2B412E}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
9
evoke-64k/ev15-4k/generic.vs
Normal file
9
evoke-64k/ev15-4k/generic.vs
Normal file
@@ -0,0 +1,9 @@
|
||||
varying vec4 Y;
|
||||
varying vec2 Z;
|
||||
|
||||
void main()
|
||||
{
|
||||
Y = gl_Color;
|
||||
Z = (gl_Vertex.xy*vec2(1.6,1.0))*0.5+0.5;
|
||||
gl_Position = gl_Vertex;
|
||||
}
|
||||
13146
evoke-64k/ev15-4k/glext.h
Normal file
13146
evoke-64k/ev15-4k/glext.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
evoke-64k/ev15-4k/link.exe
Normal file
BIN
evoke-64k/ev15-4k/link.exe
Normal file
Binary file not shown.
29
evoke-64k/ev15-4k/linkparams.txt
Normal file
29
evoke-64k/ev15-4k/linkparams.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
/CRINKLER
|
||||
/COMPMODE:SLOW
|
||||
/ORDERTRIES:5000
|
||||
/HASHTRIES:400
|
||||
/UNSAFEIMPORT
|
||||
/TRUNCATEFLOATS:24
|
||||
/HASHSIZE:500
|
||||
/REPORT:report.html
|
||||
/RANGE:opengl32
|
||||
/TRANSFORM:CALLS
|
||||
/UNALIGNCODE
|
||||
/ENTRY:"main"
|
||||
/SUBSYSTEM:WINDOWS
|
||||
"obj\bp4k_Compress (Slow)\main.compress.obj"
|
||||
4klang.obj
|
||||
opengl32.lib
|
||||
winmm.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
|
||||
272
evoke-64k/ev15-4k/main.compress.cpp
Normal file
272
evoke-64k/ev15-4k/main.compress.cpp
Normal file
@@ -0,0 +1,272 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_EXTRA_LEAN
|
||||
#include "synth.h"
|
||||
#include <GL/gl.h>
|
||||
#include "glext.h"
|
||||
#include "mark_small.h"
|
||||
|
||||
#ifndef SCREENWIDTH
|
||||
#define SCREENWIDTH 1280
|
||||
//#define SCREENWIDTH 320
|
||||
#endif
|
||||
|
||||
#ifndef SCREENHEIGHT
|
||||
#define SCREENHEIGHT 720
|
||||
//#define SCREENHEIGHT 180
|
||||
#endif
|
||||
|
||||
#ifndef ASPECTOFFSET
|
||||
#define ASPECTOFFSET 0.375f
|
||||
#endif
|
||||
|
||||
#define shaderCountOffset 14
|
||||
|
||||
#define ATOM_EDIT 0xC018
|
||||
#define ATOM_STATIC 0xC019
|
||||
|
||||
#define SCENE_LENGTH (SAMPLES_PER_TICK * 64)
|
||||
|
||||
#pragma data_seg(".aspectOffset")
|
||||
static const float gfAspectOffset = ASPECTOFFSET;
|
||||
|
||||
#pragma data_seg(".scebeLength")
|
||||
static const int giSceneLength = SCENE_LENGTH;
|
||||
|
||||
//#define PFD_HACK
|
||||
#define SHADER_WARMUP
|
||||
//#define WINDOWED
|
||||
#define START_BLACK
|
||||
|
||||
#pragma data_seg(".Shader0")
|
||||
#include "mark_small.h"
|
||||
|
||||
struct FAKEDEVMODE
|
||||
{
|
||||
BYTE _a[36];
|
||||
DWORD dmSize;
|
||||
DWORD dmFields;
|
||||
struct
|
||||
{
|
||||
BYTE _b[4];
|
||||
DWORD pfdFlags;
|
||||
} pfd;
|
||||
BYTE _c[56];
|
||||
DWORD width;
|
||||
DWORD height;
|
||||
BYTE _d[8];
|
||||
};
|
||||
|
||||
#pragma data_seg("fcw")
|
||||
static WORD fcw = 0x0E7f;
|
||||
|
||||
#pragma data_seg(".devmode")
|
||||
static FAKEDEVMODE devmode = {
|
||||
"", sizeof(devmode), DM_PELSWIDTH | DM_PELSHEIGHT, "", PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL, "", SCREENWIDTH, SCREENHEIGHT, ""
|
||||
};
|
||||
|
||||
#pragma bss_seg(".mainbss")
|
||||
static PFNGLCREATESHADERPROGRAMEXTPROC glCreateShaderProgramEXT;
|
||||
static PFNGLUSEPROGRAMPROC glUseProgram;
|
||||
static PFNGLUNIFORM3FPROC glUniform3f;
|
||||
|
||||
#pragma data_seg(".fltused")
|
||||
int _fltused = 1;
|
||||
|
||||
#pragma data_seg(".glCreateShaderProgramEXT")
|
||||
static const char* sglCreateShaderProgramEXT = "glCreateShaderProgramEXT";
|
||||
|
||||
#pragma data_seg(".glUseProgram")
|
||||
static const char* sglUseProgram = "glUseProgram";
|
||||
|
||||
#pragma data_seg(".glUniform3f")
|
||||
static const char* sglUniform3f = "glUniform3f";
|
||||
|
||||
#pragma code_seg(".main")
|
||||
void _cdecl main()
|
||||
{
|
||||
_asm
|
||||
{
|
||||
fldcw [fcw]
|
||||
|
||||
xor esi, esi
|
||||
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
|
||||
#ifndef WINDOWED
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push WS_POPUP | WS_VISIBLE | WS_MAXIMIZE
|
||||
push esi
|
||||
push ATOM_STATIC
|
||||
push esi
|
||||
push CDS_FULLSCREEN
|
||||
push offset devmode
|
||||
push esi
|
||||
push esi
|
||||
push offset lpSoundBuffer
|
||||
push _4klang_render
|
||||
push esi
|
||||
push esi
|
||||
call CreateThread
|
||||
call ChangeDisplaySettings
|
||||
call CreateWindowExA
|
||||
#else
|
||||
push SCREENHEIGHT
|
||||
push SCREENWIDTH
|
||||
push esi
|
||||
push esi
|
||||
push WS_EX_APPWINDOW | WS_VISIBLE | WS_SYSMENU
|
||||
push esi
|
||||
push ATOM_STATIC
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push offset lpSoundBuffer
|
||||
push _4klang_render
|
||||
push esi
|
||||
push esi
|
||||
call CreateThread
|
||||
call CreateWindowExA
|
||||
#endif
|
||||
|
||||
push eax
|
||||
call GetDC
|
||||
mov edi, eax
|
||||
|
||||
push esi
|
||||
#ifdef START_BLACK
|
||||
push edi
|
||||
#endif
|
||||
push edi
|
||||
#ifdef PFD_HACK
|
||||
push esi
|
||||
push 8
|
||||
#else
|
||||
push esi
|
||||
push offset devmode.pfd
|
||||
push edi
|
||||
call ChoosePixelFormat
|
||||
push eax
|
||||
#endif
|
||||
push edi
|
||||
call SetPixelFormat
|
||||
call wglCreateContext
|
||||
push eax
|
||||
push edi
|
||||
call wglMakeCurrent
|
||||
#ifdef START_BLACK
|
||||
call SwapBuffers
|
||||
#endif
|
||||
call ShowCursor
|
||||
|
||||
xor ebx, ebx
|
||||
|
||||
shaderwarmup :
|
||||
#ifdef SHADER_WARMUP
|
||||
push 1
|
||||
push 1
|
||||
push - 1
|
||||
push - 1
|
||||
#endif
|
||||
push offset mark_fs_0
|
||||
push GL_FRAGMENT_SHADER
|
||||
push sglCreateShaderProgramEXT
|
||||
call wglGetProcAddress
|
||||
call eax
|
||||
#ifdef SHADER_WARMUP
|
||||
push eax
|
||||
push sglUseProgram
|
||||
call wglGetProcAddress
|
||||
call eax
|
||||
#endif
|
||||
inc byte ptr[mark_fs_0 + shaderCountOffset]
|
||||
|
||||
cmp ebx, 9
|
||||
jnz skip
|
||||
mov byte ptr[mark_fs_0 + shaderCountOffset], 'A'
|
||||
skip:
|
||||
#ifdef SHADER_WARMUP
|
||||
push gfAspectOffset
|
||||
push dword ptr[devmode.height]
|
||||
fild dword ptr[esp]
|
||||
fstp dword ptr[esp]
|
||||
push ebx
|
||||
fild dword ptr[esp]
|
||||
fstp dword ptr[esp]
|
||||
push esi
|
||||
push sglUniform3f
|
||||
call wglGetProcAddress
|
||||
call eax
|
||||
call glRecti
|
||||
#endif
|
||||
inc ebx
|
||||
cmp ebx, 12
|
||||
jnz shaderwarmup
|
||||
|
||||
push 0x20
|
||||
push offset WaveHDR
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push offset WaveFMT
|
||||
push -1
|
||||
push offset hWaveOut
|
||||
call waveOutOpen
|
||||
push [hWaveOut]
|
||||
call waveOutWrite
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
_asm
|
||||
{
|
||||
push 0xC
|
||||
push offset MMTime
|
||||
push [hWaveOut]
|
||||
call waveOutGetPosition
|
||||
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push esi
|
||||
push edi
|
||||
push 1
|
||||
push 1
|
||||
push -1
|
||||
push -1
|
||||
push gfAspectOffset
|
||||
push dword ptr[devmode.height]
|
||||
fild dword ptr[esp]
|
||||
fstp dword ptr[esp]
|
||||
push dword ptr[MMTime.u.sample]
|
||||
fild dword ptr[esp]
|
||||
fild giSceneLength
|
||||
fdiv
|
||||
fst dword ptr[esp]
|
||||
push esi
|
||||
push esi
|
||||
fistp dword ptr[esp]
|
||||
pop eax
|
||||
inc eax
|
||||
push eax
|
||||
push sglUseProgram
|
||||
call wglGetProcAddress
|
||||
call eax
|
||||
|
||||
push sglUniform3f
|
||||
call wglGetProcAddress
|
||||
call eax
|
||||
call glRecti
|
||||
call SwapBuffers
|
||||
call PeekMessage
|
||||
}
|
||||
} while (MMTime.u.sample < MAX_SAMPLES && !GetAsyncKeyState(VK_ESCAPE));
|
||||
|
||||
ExitProcess(0);
|
||||
}
|
||||
547
evoke-64k/ev15-4k/main.cpp
Normal file
547
evoke-64k/ev15-4k/main.cpp
Normal file
@@ -0,0 +1,547 @@
|
||||
//#define NOMUSICTIMING
|
||||
#define MULTISHADER
|
||||
|
||||
#ifdef _DEBUG
|
||||
#include <time.h>
|
||||
#include <io.h>
|
||||
#include <process.h>
|
||||
#include "Shaders.h"
|
||||
#include "synth.h"
|
||||
#include "4klang.h"
|
||||
#else
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_EXTRA_LEAN
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
#include "glext.h"
|
||||
#include "synth.h"
|
||||
|
||||
#include "4klang.h"
|
||||
#ifdef NOMUSICTIMING
|
||||
#include "Mmsystem.h"
|
||||
#endif
|
||||
|
||||
#define V_Y "Y"
|
||||
#define V_Z "Z"
|
||||
|
||||
#ifndef ASPECT
|
||||
#define ASPECT 1.78
|
||||
#endif
|
||||
|
||||
#ifndef SCREENWIDTH
|
||||
//#define SCREENWIDTH 1280
|
||||
#define SCREENWIDTH 320
|
||||
#endif
|
||||
|
||||
#ifndef SCREENHEIGTH
|
||||
//#define SCREENHEIGTH 720
|
||||
#define SCREENHEIGTH 180
|
||||
#endif
|
||||
|
||||
#define WINDOWED
|
||||
|
||||
#include "mark_small.h"
|
||||
|
||||
#define STR2(x) #x
|
||||
#define STR(x) STR2(x)
|
||||
|
||||
//static char* vsh = "varying vec4 Y;varying vec2 Z;void main(){Y=gl_Color;Z=(gl_Vertex.xy*vec2(Y.w,1))*.5+.5;gl_Position=gl_Vertex;}";
|
||||
static char* vsh = "varying vec4 "V_Y";varying vec2 "V_Z";void main(){"V_Y"=gl_Color;"V_Z"=(gl_Vertex.xy*vec2("STR( ASPECT )",1))*.5+.5;gl_Position=gl_Vertex;}";
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define HALF_FAC 1
|
||||
static const int gi_ScreenWidth = 1280/HALF_FAC;
|
||||
|
||||
static const int gi_ScreenHeight = 720/HALF_FAC;
|
||||
#else
|
||||
static const int gi_ScreenWidth = SCREENWIDTH;
|
||||
|
||||
static const int gi_ScreenHeight = SCREENHEIGTH ;
|
||||
#endif
|
||||
|
||||
#pragma data_seg(".glUniform3f")
|
||||
static const char* glUniform3f = "glUniform3f";
|
||||
|
||||
#ifdef _DEBUG
|
||||
HANDLE gh_ShaderCompileEvent;
|
||||
static char** gs_LastShader_;
|
||||
static __time64_t gi_ShaderChangedDate;
|
||||
static unsigned int gi_ShaderProgram;
|
||||
static unsigned int gi_LastShaderProgram;
|
||||
static const char* gs_VertexShader = "generic.vs";
|
||||
static const char* gs_ShaderFile = "mark.fs";
|
||||
#endif
|
||||
|
||||
static const PIXELFORMATDESCRIPTOR pfd={
|
||||
0, 1, PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 8
|
||||
};
|
||||
|
||||
static DEVMODE dmScreenSettings={
|
||||
0,0,0,sizeof(dmScreenSettings),0,DM_PELSWIDTH|DM_PELSHEIGHT,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,gi_ScreenWidth,gi_ScreenHeight
|
||||
};
|
||||
|
||||
__forceinline unsigned int compileShader(const char* vsh, const char* fsh)
|
||||
{
|
||||
GLuint s,p;
|
||||
p = ((PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram"))();
|
||||
s = ((PFNGLCREATESHADERPROC)(wglGetProcAddress("glCreateShader")))(GL_VERTEX_SHADER);
|
||||
((PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource")) (s, 1, &vsh, NULL);
|
||||
((PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader"))(s);
|
||||
((PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader")) (p,s);
|
||||
s = ((PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader"))(GL_FRAGMENT_SHADER);
|
||||
((PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource")) (s, 1, &fsh, NULL);
|
||||
((PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader"))(s);
|
||||
((PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader")) (p,s);
|
||||
((PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram"))(p);
|
||||
#ifndef MULTISHADER
|
||||
((PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram"))(p);
|
||||
#endif
|
||||
return p;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define CHECK_DEBUG_OUTPUT(shader) \
|
||||
{\
|
||||
GLint success = 0;\
|
||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);\
|
||||
if (!success)\
|
||||
{\
|
||||
GLchar infoLog[16384];\
|
||||
glGetShaderInfoLog(shader, 16384, NULL, infoLog);\
|
||||
OutputDebugString(infoLog);\
|
||||
}\
|
||||
}
|
||||
#else
|
||||
#define CHECK_DEBUG_OUTPUT(shader)
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
DWORD WINAPI filemon(void* args)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
_finddata_t fdata;
|
||||
long hfile = _findfirst(gs_ShaderFile, &fdata);
|
||||
if (hfile != -1)
|
||||
{
|
||||
if (fdata.time_write != gi_ShaderChangedDate)
|
||||
{
|
||||
gi_ShaderChangedDate = fdata.time_write;
|
||||
::SetEvent(gh_ShaderCompileEvent);
|
||||
std::cout << "Shader loaded." << std::endl;
|
||||
}
|
||||
_findclose(hfile);
|
||||
}
|
||||
::Sleep(100);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#include <cmath>
|
||||
|
||||
float g_DebugCamPos[ 3 ]= {0,2.0f,-5.0f};
|
||||
float g_DebugCamRot[ 2 ]= {0,0};
|
||||
|
||||
bool g_ShaderDebug= true;
|
||||
int g_ShaderID= 0;
|
||||
int g_SceneID= 0;
|
||||
int g_MaxSceneID= 16;
|
||||
float g_fSqrAnimFac= 0.0f;
|
||||
|
||||
float g_fSpeedFac= 8.0f;
|
||||
|
||||
bool g_bForceCompile= true;
|
||||
|
||||
void MoveCam( float& fCurTime )
|
||||
{
|
||||
float fSpeed= 0.25f;
|
||||
|
||||
bool bShift= GetAsyncKeyState( VK_SHIFT ) || GetAsyncKeyState( VK_MBUTTON ) || GetAsyncKeyState( VK_RBUTTON );
|
||||
bool bStrg= GetAsyncKeyState( VK_CONTROL ) != 0;
|
||||
float a= g_DebugCamRot[ 0 ];
|
||||
float b= g_DebugCamRot[ 1 ];
|
||||
float g_Forward[ 3 ]= {sinf( a )*cosf(b),-sinf(b), cosf( a )*cosf(b)};
|
||||
float g_Right[ 3 ]= {cosf( a ),0, -sinf( a )};
|
||||
if( bShift )
|
||||
{
|
||||
if(bStrg)
|
||||
{
|
||||
fSpeed *= 4.0f;
|
||||
}
|
||||
|
||||
if( GetAsyncKeyState( VK_HOME ) && bStrg)
|
||||
{
|
||||
g_DebugCamPos[ 0 ]= 0.0f;
|
||||
g_DebugCamPos[ 1 ]= 2.0f;
|
||||
g_DebugCamPos[ 2 ]= -5.0f;
|
||||
|
||||
g_DebugCamRot[ 0 ]= 0.0f;
|
||||
g_DebugCamRot[ 1 ]= 0.0f;
|
||||
}
|
||||
|
||||
if( GetAsyncKeyState( 'W' ) )
|
||||
{
|
||||
g_DebugCamPos[ 0 ]+= fSpeed * g_Forward[ 0 ];
|
||||
g_DebugCamPos[ 1 ]+= fSpeed * g_Forward[ 1 ];
|
||||
g_DebugCamPos[ 2 ]+= fSpeed * g_Forward[ 2 ];
|
||||
}
|
||||
if( GetAsyncKeyState( 'S' ) )
|
||||
{
|
||||
g_DebugCamPos[ 0 ]-= fSpeed * g_Forward[ 0 ];
|
||||
g_DebugCamPos[ 1 ]-= fSpeed * g_Forward[ 1 ];
|
||||
g_DebugCamPos[ 2 ]-= fSpeed * g_Forward[ 2 ];
|
||||
}
|
||||
if( GetAsyncKeyState( 'A' ) )
|
||||
{
|
||||
g_DebugCamPos[ 0 ]-= fSpeed * g_Right[ 0 ];
|
||||
g_DebugCamPos[ 1 ]-= fSpeed * g_Right[ 1 ];
|
||||
g_DebugCamPos[ 2 ]-= fSpeed * g_Right[ 2 ];
|
||||
}
|
||||
if( GetAsyncKeyState( 'D' ) )
|
||||
{
|
||||
g_DebugCamPos[ 0 ]+= fSpeed * g_Right[ 0 ];
|
||||
g_DebugCamPos[ 1 ]+= fSpeed * g_Right[ 1 ];
|
||||
g_DebugCamPos[ 2 ]+= fSpeed * g_Right[ 2 ];
|
||||
}
|
||||
if( GetAsyncKeyState( 'F' ) )
|
||||
{
|
||||
g_DebugCamPos[ 1 ]+= fSpeed;
|
||||
}
|
||||
if( GetAsyncKeyState( 'V' ) )
|
||||
{
|
||||
g_DebugCamPos[ 1 ]-= fSpeed;
|
||||
}
|
||||
|
||||
if( bStrg )
|
||||
{
|
||||
if( ( GetAsyncKeyState( VK_F2 ) & 1 ) != 0)
|
||||
{
|
||||
g_ShaderDebug= !g_ShaderDebug;
|
||||
g_bForceCompile= true;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F3 ) & 1 ) != 0)
|
||||
{
|
||||
g_ShaderID= (g_ShaderID + MAX_SHADER_ID - 1 ) % MAX_SHADER_ID;
|
||||
g_bForceCompile= true;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F4 ) & 1 )!= 0)
|
||||
{
|
||||
g_ShaderID= (g_ShaderID + MAX_SHADER_ID + 1 ) % MAX_SHADER_ID;
|
||||
g_bForceCompile= true;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F7 ) & 1 ) != 0)
|
||||
{
|
||||
g_SceneID= (g_SceneID + g_MaxSceneID - 1 ) % g_MaxSceneID;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F8 ) & 1 )!= 0)
|
||||
{
|
||||
g_SceneID= (g_SceneID + g_MaxSceneID + 1 ) % g_MaxSceneID;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F9 ) & 1 ) != 0)
|
||||
{
|
||||
g_fSqrAnimFac-= 1.0f;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F10 ) & 1 )!= 0)
|
||||
{
|
||||
g_fSqrAnimFac+= 1.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ( GetAsyncKeyState( VK_F6 ) & 1 )!= 0)
|
||||
{
|
||||
fCurTime= 0.0f;
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F7 ) & 1 )!= 0)
|
||||
{
|
||||
g_fSpeedFac*= 2.0f;
|
||||
if( g_fSpeedFac > 32.0f )
|
||||
{
|
||||
g_fSpeedFac= 32.0f;
|
||||
}
|
||||
}
|
||||
if( ( GetAsyncKeyState( VK_F8 ) & 1 ) != 0)
|
||||
{
|
||||
g_fSpeedFac/= 2.0f;
|
||||
if( g_fSpeedFac < 2.0f )
|
||||
{
|
||||
g_fSpeedFac= 2.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static POINT OldCurPos;
|
||||
POINT CurPos;
|
||||
GetCursorPos( &CurPos );
|
||||
|
||||
if( bShift )
|
||||
{
|
||||
g_DebugCamRot[ 0 ]-= 0.003f * ( OldCurPos.x - CurPos.x );
|
||||
g_DebugCamRot[ 1 ]-= 0.003f * ( OldCurPos.y - CurPos.y );
|
||||
g_DebugCamRot[ 1 ]= max( g_DebugCamRot[ 1 ], -1.56f );
|
||||
g_DebugCamRot[ 1 ]= min( g_DebugCamRot[ 1 ], 1.56f );
|
||||
}
|
||||
OldCurPos= CurPos;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
LRESULT MessageCallback(HWND ar_Handle, UINT aw_Message, WPARAM aw_Param, LPARAM al_Param)
|
||||
{
|
||||
return DefWindowProc(ar_Handle, aw_Message, aw_Param, al_Param);
|
||||
}
|
||||
#endif
|
||||
|
||||
int gCurScene= 0;
|
||||
int gCurSceneStart= 0;
|
||||
/*int g_SceneLength[]=
|
||||
{
|
||||
16, 16, 16,
|
||||
16, 16, 16,
|
||||
16, 32, 16,
|
||||
16, 16, 16,
|
||||
0x80000000
|
||||
};
|
||||
int g_SceneShader[]=
|
||||
{
|
||||
0,0,0,
|
||||
1,1,1,
|
||||
2,2,2,
|
||||
3,3,3,
|
||||
};
|
||||
float g_SceneFactor[]=
|
||||
{
|
||||
0, 0, 0,
|
||||
0, 0, 1.0f,
|
||||
0, 0, 1.0f,
|
||||
0, 1.0f, 1.0f,
|
||||
0,
|
||||
};*/
|
||||
|
||||
void _cdecl main()
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
//ChangeDisplaySettings (&dmScreenSettings,CDS_FULLSCREEN);
|
||||
//HDC hDC = GetDC(CreateWindow("edit", 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0));
|
||||
//HWND hWnd = CreateWindow("MDICLIENT", "Test", WS_OVERLAPPED | WS_VISIBLE | WS_SYSMENU, 0, 0, gi_ScreenWidth, gi_ScreenHeight, 0, 0, 0, 0);
|
||||
|
||||
WNDCLASSEX wndclass;
|
||||
wndclass.cbSize = sizeof (wndclass) ;
|
||||
wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
|
||||
wndclass.lpfnWndProc = (WNDPROC)MessageCallback ;
|
||||
wndclass.cbClsExtra = 0 ;
|
||||
wndclass.cbWndExtra = 0 ;
|
||||
wndclass.hInstance = NULL ;
|
||||
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
|
||||
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
|
||||
wndclass.hbrBackground = (HBRUSH) GetStockObject (DKGRAY_BRUSH) ;
|
||||
wndclass.lpszMenuName = NULL;
|
||||
wndclass.lpszClassName = "Window" ;
|
||||
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;
|
||||
|
||||
RegisterClassEx(&wndclass);
|
||||
|
||||
HWND hWnd = CreateWindow(
|
||||
"Window", /* Classname */
|
||||
"Title", /* Title Text */
|
||||
WS_EX_APPWINDOW, /* default window */
|
||||
10, /* Windows decides the position */
|
||||
30, /* where the window ends up on the screen */
|
||||
gi_ScreenWidth, /* The programs width */
|
||||
gi_ScreenHeight, /* and height in pixels */
|
||||
NULL, /* The window is a child-window to desktop */
|
||||
NULL, /* No menu */
|
||||
GetModuleHandle(NULL), //GetModuleHandle(NULL), /* Program Instance handler */
|
||||
NULL /* No Window Creation data */
|
||||
);
|
||||
|
||||
|
||||
HDC hDC = GetDC(hWnd);
|
||||
SetPixelFormat(hDC, ChoosePixelFormat(hDC, &pfd), &pfd);
|
||||
wglMakeCurrent(hDC, wglCreateContext(hDC));
|
||||
initShaders();
|
||||
gh_ShaderCompileEvent = ::CreateEvent(NULL, FALSE, FALSE, TEXT("WriteEvent"));
|
||||
SetThreadPriority((HANDLE)CreateThread(0, 0, &filemon, 0, 0, 0), THREAD_PRIORITY_BELOW_NORMAL);
|
||||
|
||||
ShowWindow (hWnd , SW_NORMAL );
|
||||
::Sleep(100);
|
||||
#else
|
||||
#ifndef WINDOWED
|
||||
ChangeDisplaySettings (&dmScreenSettings,CDS_FULLSCREEN);
|
||||
HDC hDC = GetDC(CreateWindow("edit", 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0));
|
||||
#else
|
||||
HDC hDC = GetDC(CreateWindow("static", "static", WS_EX_APPWINDOW | WS_VISIBLE | WS_SYSMENU, 0, 0, gi_ScreenWidth, gi_ScreenHeight, 0, 0, 0, 0));
|
||||
#endif
|
||||
::Sleep(10000);
|
||||
|
||||
SetPixelFormat(hDC, ChoosePixelFormat(hDC, &pfd), &pfd);
|
||||
wglMakeCurrent(hDC, wglCreateContext(hDC));
|
||||
#ifdef MULTISHADER
|
||||
unsigned int shaders[16];
|
||||
|
||||
mark_fs_0[6] = '0';
|
||||
for(int i = 0; i < 16; ++i)
|
||||
{
|
||||
mark_fs_0[6]++;
|
||||
if( i == 10)
|
||||
{
|
||||
mark_fs_0[6] = 'a';
|
||||
}
|
||||
shaders[i]=compileShader(vsh, mark_fs_0 ),
|
||||
}
|
||||
#else
|
||||
compileShader(vsh, mark_fs_0 );
|
||||
#endif
|
||||
ShowCursor(FALSE);
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
if (::WaitForSingleObject(gh_ShaderCompileEvent, 0) == WAIT_OBJECT_0)
|
||||
{
|
||||
::Sleep(250);
|
||||
gi_ShaderProgram = createProgram(
|
||||
createVertexShader(gs_VertexShader),
|
||||
createFragmentShader(gs_ShaderFile, g_ShaderID, g_ShaderDebug ));
|
||||
|
||||
((PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram"))(gi_ShaderProgram);
|
||||
PrintErrors();
|
||||
}
|
||||
glColor4f(0,0, (GLfloat)gi_ScreenWidth, (GLfloat)gi_ScreenHeight);
|
||||
glRectf(-1, -1, 1, 1);
|
||||
SwapBuffers(hDC);
|
||||
#endif
|
||||
|
||||
#ifndef _DEBUG
|
||||
InitSound();
|
||||
#else
|
||||
LARGE_INTEGER li_OldTime = { 0 };
|
||||
#endif
|
||||
#ifdef NOMUSICTIMING
|
||||
int iStartTick= timeGetTime();
|
||||
#endif
|
||||
|
||||
float lf_Time= 0.0f;
|
||||
do
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
MSG msg;
|
||||
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||
{
|
||||
if (msg.message == WM_QUIT)
|
||||
return;
|
||||
else
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
if (::WaitForSingleObject(gh_ShaderCompileEvent, 0) == WAIT_OBJECT_0 || g_bForceCompile)
|
||||
{
|
||||
::Sleep(50);
|
||||
gi_ShaderProgram = createProgram(
|
||||
createVertexShader(gs_VertexShader),
|
||||
createFragmentShader(gs_ShaderFile, g_ShaderID, g_ShaderDebug));
|
||||
|
||||
((PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram"))(gi_ShaderProgram);
|
||||
PrintErrors();
|
||||
|
||||
g_bForceCompile= false;
|
||||
}
|
||||
#endif
|
||||
|
||||
get_Sample();
|
||||
int Sample= MMTime.u.sample - gCurSceneStart;
|
||||
int SceneEnd = 8 * SAMPLES_PER_TICK * 8;//samples per tick
|
||||
|
||||
#ifdef NOMUSICTIMING
|
||||
lf_Time = ( timeGetTime() - iStartTick ) * 0.001f / 16.0f;
|
||||
#endif
|
||||
|
||||
glLoadIdentity();
|
||||
|
||||
#ifdef _DEBUG
|
||||
LARGE_INTEGER li_CurrentTime, li_CurrentFrequency;
|
||||
QueryPerformanceCounter(&li_CurrentTime);
|
||||
QueryPerformanceFrequency(&li_CurrentFrequency);
|
||||
//lf_Time = (float)li_CurrentTime.QuadPart / (float)li_CurrentFrequency.QuadPart;
|
||||
float lf_DiffTime = (float)(li_CurrentTime.QuadPart - li_OldTime.QuadPart) / (float)li_CurrentFrequency.QuadPart;
|
||||
char windowText[255];
|
||||
sprintf_s(
|
||||
windowText,
|
||||
"Shader: %d Scene: %d AnimFac: %2.2f FPS: %.2f, Render time: %.4fms",
|
||||
g_ShaderID,
|
||||
g_SceneID,
|
||||
g_fSqrAnimFac,
|
||||
1.0f / lf_DiffTime,
|
||||
lf_DiffTime );
|
||||
::SetWindowTextA(hWnd, windowText);
|
||||
|
||||
li_OldTime = li_CurrentTime;
|
||||
|
||||
lf_Time+= lf_DiffTime * 145.0f / 60.0f / g_fSpeedFac;
|
||||
if( lf_Time > 1.0f )
|
||||
{
|
||||
lf_Time= 0.0f;
|
||||
if (g_fSqrAnimFac < 0.0)
|
||||
{
|
||||
g_SceneID = (g_SceneID + 1) % 16;
|
||||
}
|
||||
}
|
||||
if( lf_Time < 0.0f )
|
||||
{
|
||||
lf_Time = 0.0f;
|
||||
}
|
||||
if (g_fSqrAnimFac == 0)
|
||||
{
|
||||
lf_Time = 0.0f;
|
||||
}
|
||||
((PFNGLUNIFORM3FPROC)wglGetProcAddress(glUniform3f))(0, (float)g_SceneID + lf_Time, (GLfloat)gi_ScreenHeight, (GLfloat)0.375f);
|
||||
#else
|
||||
#ifdef MULTISHADER
|
||||
((PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram"))(shaders[gCurScene ]);
|
||||
#endif
|
||||
lf_Time= (float)Sample / (float)SceneEnd;
|
||||
glColor4f((float)gCurScene, lf_Time, gi_ScreenWidth, gi_ScreenHeight);
|
||||
#endif
|
||||
#ifdef _DEBUG
|
||||
MoveCam( lf_Time );
|
||||
|
||||
float fDebugData[ 16 ];
|
||||
fDebugData[ 0 ]= g_DebugCamPos[ 0 ];
|
||||
fDebugData[ 1 ]= g_DebugCamPos[ 1 ];
|
||||
fDebugData[ 2 ]= g_DebugCamPos[ 2 ];
|
||||
fDebugData[ 4 ]= g_DebugCamRot[ 0 ];
|
||||
fDebugData[ 5 ]= g_DebugCamRot[ 1 ];
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadMatrixf((GLfloat*)&fDebugData);
|
||||
#endif
|
||||
|
||||
glRects(-1, -1, 1, 1);
|
||||
SwapBuffers(hDC);
|
||||
|
||||
#ifndef _DEBUG
|
||||
if( Sample > SceneEnd )
|
||||
{
|
||||
gCurSceneStart+= SceneEnd;
|
||||
gCurScene++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
while ( !GetAsyncKeyState(VK_ESCAPE) );
|
||||
#else
|
||||
while ( g_SceneLength[ gCurScene ] > 0 && !GetAsyncKeyState(VK_ESCAPE) );
|
||||
#endif
|
||||
ExitProcess(0);
|
||||
}
|
||||
154
evoke-64k/ev15-4k/main_rel.cpp
Normal file
154
evoke-64k/ev15-4k/main_rel.cpp
Normal file
@@ -0,0 +1,154 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_EXTRA_LEAN
|
||||
#include "synth.h"
|
||||
#include <GL/gl.h>
|
||||
#include "glext.h"
|
||||
#include "mark_small.h"
|
||||
|
||||
#ifndef SCREENWIDTH
|
||||
//#define SCREENWIDTH 1280
|
||||
#define SCREENWIDTH 640
|
||||
#endif
|
||||
|
||||
#ifndef SCREENHEIGHT
|
||||
//#define SCREENHEIGHT 720
|
||||
#define SCREENHEIGHT 480
|
||||
#endif
|
||||
|
||||
#ifndef ASPECTOFFSET
|
||||
#define ASPECTOFFSET 0.375f
|
||||
#endif
|
||||
|
||||
//#define WINDOWED
|
||||
|
||||
#pragma data_seg(".Shader0")
|
||||
#include "mark_small.h"
|
||||
|
||||
struct FAKEPFD
|
||||
{
|
||||
WORD nSize;
|
||||
WORD nVersion;
|
||||
DWORD dwFlags;
|
||||
// Snip
|
||||
};
|
||||
|
||||
struct FAKEDEVMODE
|
||||
{
|
||||
BYTE dmDeviceName[CCHDEVICENAME];
|
||||
WORD dmSpecVersion;
|
||||
WORD dmDriverVersion;
|
||||
WORD dmSize;
|
||||
WORD dmDriverExtra;
|
||||
DWORD dmFields;
|
||||
union {
|
||||
/* printer only fields */
|
||||
struct {
|
||||
short dmOrientation;
|
||||
short dmPaperSize;
|
||||
short dmPaperLength;
|
||||
short dmPaperWidth;
|
||||
short dmScale;
|
||||
short dmCopies;
|
||||
short dmDefaultSource;
|
||||
short dmPrintQuality;
|
||||
};
|
||||
FAKEPFD pfd;
|
||||
};
|
||||
short dmColor;
|
||||
short dmDuplex;
|
||||
short dmYResolution;
|
||||
short dmTTOption;
|
||||
short dmCollate;
|
||||
BYTE dmFormName[CCHFORMNAME];
|
||||
WORD dmLogPixels;
|
||||
DWORD dmBitsPerPel;
|
||||
DWORD dmPelsWidth;
|
||||
DWORD dmPelsHeight;
|
||||
union {
|
||||
DWORD dmDisplayFlags;
|
||||
DWORD dmNup;
|
||||
};
|
||||
DWORD dmDisplayFrequency;
|
||||
};
|
||||
|
||||
#pragma bss_seg(".mainbss")
|
||||
static PFNGLCREATESHADERPROGRAMEXTPROC glCreateShaderProgramEXT;
|
||||
static PFNGLUSEPROGRAMPROC glUseProgram;
|
||||
static PFNGLUNIFORM3FPROC glUniform3f;
|
||||
|
||||
#pragma data_seg(".devmode")
|
||||
static FAKEDEVMODE devmode = {
|
||||
"", 0, 0, sizeof(devmode), 0, DM_PELSWIDTH | DM_PELSHEIGHT, 0, 0, PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, SCREENWIDTH, SCREENHEIGHT, 0, 0
|
||||
};
|
||||
|
||||
#pragma data_seg(".fltused")
|
||||
int _fltused = 1;
|
||||
|
||||
#pragma data_seg(".glCreateShaderProgramEXT")
|
||||
static const char* sglCreateShaderProgramEXT = "glCreateShaderProgramEXT";
|
||||
|
||||
#pragma data_seg(".glUseProgram")
|
||||
static const char* sglUseProgram = "glUseProgram";
|
||||
|
||||
#pragma data_seg(".glUniform3f")
|
||||
static const char* sglUniform3f = "glUniform3f";
|
||||
|
||||
#define shaderCountOffset 14
|
||||
|
||||
#define ATOM_EDIT 0xC018
|
||||
#define ATOM_STATIC 0xC019
|
||||
|
||||
#define SCENE_LENGTH (SAMPLES_PER_TICK * 64)
|
||||
|
||||
#pragma code_seg(".main")
|
||||
void _cdecl main()
|
||||
{
|
||||
InitSound();
|
||||
|
||||
#ifndef WINDOWED
|
||||
ChangeDisplaySettings((DEVMODEA*)&devmode, CDS_FULLSCREEN);
|
||||
HDC hDC = GetDC(CreateWindowExA(0, (LPCSTR)ATOM_STATIC, 0, WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0));
|
||||
#else
|
||||
HDC hDC = GetDC(CreateWindowExA(0, (LPCSTR)ATOM_STATIC, 0, WS_EX_APPWINDOW | WS_VISIBLE | WS_SYSMENU, 0, 0, SCREENWIDTH, SCREENHEIGHT, 0, 0, 0, 0));
|
||||
#endif
|
||||
|
||||
SetPixelFormat(hDC, ChoosePixelFormat(hDC, (const PIXELFORMATDESCRIPTOR*)&devmode.pfd), 0);
|
||||
// if size is a problem, try this:
|
||||
// SetPixelFormat(hDC, 8, 0);
|
||||
wglMakeCurrent(hDC, wglCreateContext(hDC));
|
||||
|
||||
glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)wglGetProcAddress(sglCreateShaderProgramEXT);
|
||||
glUseProgram = (PFNGLUSEPROGRAMPROC)wglGetProcAddress(sglUseProgram);
|
||||
glUniform3f = (PFNGLUNIFORM3FPROC)wglGetProcAddress(sglUniform3f);
|
||||
|
||||
for (int i = 0; i < 12; ++i)
|
||||
{
|
||||
glUseProgram(glCreateShaderProgramEXT(GL_FRAGMENT_SHADER, mark_fs_0));
|
||||
mark_fs_0[shaderCountOffset]++;
|
||||
if (i == 9)
|
||||
{
|
||||
mark_fs_0[shaderCountOffset] = 'A';
|
||||
}
|
||||
glUniform3f(0, i, SCREENHEIGHT, ASPECTOFFSET);
|
||||
glRecti(-1, -1, 1, 1);
|
||||
}
|
||||
|
||||
ShowCursor(FALSE);
|
||||
PlaySound();
|
||||
|
||||
do
|
||||
{
|
||||
get_Sample();
|
||||
|
||||
float fTime = (float)MMTime.u.sample / SCENE_LENGTH;
|
||||
|
||||
glUseProgram((int)fTime + 1);
|
||||
glUniform3f(0, fTime, SCREENHEIGHT, ASPECTOFFSET);
|
||||
glRecti(-1, -1, 1, 1);
|
||||
SwapBuffers(hDC);
|
||||
|
||||
::PeekMessage(0, 0, 0, 0, 0);
|
||||
} while (MMTime.u.sample < MAX_SAMPLES && !GetAsyncKeyState(VK_ESCAPE));
|
||||
|
||||
ExitProcess(0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs
Normal file
568
evoke-64k/ev15-4k/mark.fs
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
@D
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
@@
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
496
evoke-64k/ev15-4k/mark.fs.orig
Normal file
496
evoke-64k/ev15-4k/mark.fs.orig
Normal file
@@ -0,0 +1,496 @@
|
||||
const int shader= 0;
|
||||
|
||||
@D
|
||||
//#version 430
|
||||
@@
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspect
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurScene, CurStep, pi2= 6.28319;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 8., 4., 2.0);
|
||||
vec3 BackColor= vec3( 0.7, 1.0, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float r = p.y;
|
||||
p /= 0.2;
|
||||
p.x += CurTime;
|
||||
r += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
r += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
r += abs (0.04 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
r += abs (0.2 * noise(p.xz));
|
||||
return smin (r, r + w - 2.0, 2.0);
|
||||
}
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
o.y -= min( 18.0, -50.0 + 18.0 * Y.x);
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
|
||||
float r = min(1.0, 1.0 + p.z + Y.x * 44.0 - 377.0);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return CBox2D(p.xy, vec2(r * 0.2, r), r * 0.2);
|
||||
max(
|
||||
max(
|
||||
CBox(o, vec3(12.0,12.0,12.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 50.0 * (Y.x - 6.0))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 22.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
//if( shader == 0 )
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
//else if ( shader == 1 )
|
||||
// return .0; //min(min(min(f4(p),f5(p)),f6(p)),f7(p));
|
||||
//else if ( shader == 2 )
|
||||
// return .0; //min(min(min(f8(p),f9(p)),f10(p)),f11(p));
|
||||
//else if ( shader == 3 )
|
||||
// return .0; //min( min(f12(p),f13(p)),f14(p));
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 2., 0.8, 1.2);
|
||||
CurColor = vec3(.9,.7,.6);
|
||||
CurStep= .8;
|
||||
CurNormal.y= 0.;
|
||||
CurNormal.x= 0.;
|
||||
//m=2;
|
||||
}
|
||||
}
|
||||
|
||||
void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
<<<<<<< .mine
|
||||
vec3 rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 1.0);
|
||||
rayDir.x -= Y.z;
|
||||
=======
|
||||
vec3 rayDir = vec3((gl_FragCoord.xy / Y.z - 0.5), 0.8);
|
||||
rayDir.x -= Y.w;
|
||||
>>>>>>> .r1084
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene-- < 1.0 )
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( -11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0* (1.0 - CurTime * 0.2) );
|
||||
//CurTime2 = 0.0;
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( 0.0, -99.* (0.5 + CurTime * 1.5), -6.);
|
||||
rayDir.yz= rotate( rayDir.yz, -1.0 );
|
||||
//CurTime2 = 0.0;
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3(-88.* (1. + CurTime * 1.), 10.0, -4.);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 1. - CurTime );
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3(-88.* (1. - CurTime * 0.4), 13.0, 4.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 3. + CurTime );
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3(-33.* (1. - CurTime * 0.6), 103.0, -6.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 6. );
|
||||
CurTime2 *= 2.0;
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( -8.0, -99.* (CurTime * 1.8), 6.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 3. );
|
||||
CurTime2 *= 2.0;
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -88., 22.0, -99.0 * (1.0 - CurTime * 1.2));
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( 166.0, 44.0, 99.0 * (1.0 - CurTime * 3.3));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 );
|
||||
rayDir.xz= rotate( rayDir.xz, 1.0 - CurTime );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene-- < 1.0 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
|
||||
CurScene= Y.x - fract(Y.x);
|
||||
|
||||
@D
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
@@
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<250.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
for (CurStep=1.0;t<250.0 && CurStep>t*.0005;t+=CurStep,RayStep=rayDir*t )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( f(p + CurNormal.xyy) - f(p - CurNormal.xyy), f(p + CurNormal.yxy) - f(p - CurNormal.yxy), f(p + CurNormal.yyx) - f(p - CurNormal.yyx) );
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
mat(p);
|
||||
|
||||
if( t > 250.0 )
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*CurColor;//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(15.8, 15.79, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_0
Normal file
568
evoke-64k/ev15-4k/mark.fs_0
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_0_dbg
Normal file
568
evoke-64k/ev15-4k/mark.fs_0_dbg
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_1
Normal file
568
evoke-64k/ev15-4k/mark.fs_1
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_1_dbg
Normal file
568
evoke-64k/ev15-4k/mark.fs_1_dbg
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_2
Normal file
568
evoke-64k/ev15-4k/mark.fs_2
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_2_dbg
Normal file
568
evoke-64k/ev15-4k/mark.fs_2_dbg
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_3
Normal file
568
evoke-64k/ev15-4k/mark.fs_3
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
568
evoke-64k/ev15-4k/mark.fs_3_dbg
Normal file
568
evoke-64k/ev15-4k/mark.fs_3_dbg
Normal file
@@ -0,0 +1,568 @@
|
||||
const int CurScene = 0x6;
|
||||
|
||||
// Parameters from our host
|
||||
// x: Scene+Zeit
|
||||
// y: Hoehe
|
||||
// z: Aspec
|
||||
uniform vec3 Y;
|
||||
|
||||
// All data of our world
|
||||
float cFac, CurTime, CurTime2, CurStep, pi2= 6.28319;//, CurScene;
|
||||
int m;
|
||||
vec2 CurNormal;
|
||||
vec3 cRes, rayDir, CurColor = vec3(0.), RayStep = vec3(0.);
|
||||
vec3 LightColor= vec3( 5., 4.5, 4.0);
|
||||
vec3 BackColor= vec3( 0.7, 0.9, 1.2);
|
||||
vec4 HitMaterial;
|
||||
|
||||
|
||||
vec2 rotate(vec2 v,float y)
|
||||
{
|
||||
return cos(y)*v+sin(y)*vec2(-v.y,v.x);
|
||||
}
|
||||
|
||||
//repeat around y axis w times
|
||||
//void rp(inout vec3 p, float trans, float w)
|
||||
float repeatr(inout vec2 v,float x, float y)
|
||||
{
|
||||
float a= atan(v.y,v.x);
|
||||
float z=mod(a,y)-y*.5;
|
||||
v=(length(v))*vec2(cos(z),sin(z));
|
||||
v.x-=x;
|
||||
return a-z;
|
||||
}
|
||||
|
||||
void repeat( inout float w, float y )
|
||||
{
|
||||
w= mod( w - y*.5, y ) - y*.5;
|
||||
}
|
||||
|
||||
void repeate( inout float w, float y, float z )
|
||||
{
|
||||
w= max( abs(w)-z, mod( w - y*.5, y ) - y*.5);
|
||||
}
|
||||
|
||||
/*float row( float w, float y)
|
||||
{
|
||||
return floor( ( w - y*.5 )/ y );
|
||||
}*/
|
||||
|
||||
//radius of the torus/ radius of the ring
|
||||
/*float torus(vec3 p,float f)
|
||||
{
|
||||
return length(vec2(length(p.xz) - f,p.y));
|
||||
}*/
|
||||
|
||||
/*float signedDistToBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 di = abs(p) - b;
|
||||
float mc = maxcomp(di);
|
||||
return mc<0.0 ? mc : length(max(di,0.0));
|
||||
}*/
|
||||
|
||||
float CBox( in vec3 p, in vec3 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec3(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
float CBox2D( in vec2 p, in vec2 box, float rad )
|
||||
{
|
||||
return length( max( abs(p) - box + vec2(rad), 0.0 ) ) - rad;
|
||||
}
|
||||
|
||||
/*float EndlessBar( vec2 p, float y, float z )
|
||||
{
|
||||
return length( max( abs(p) - vec2(y) + vec2(z), 0.0 ) ) - z;
|
||||
}*/
|
||||
|
||||
/*float noise3D( vec3 p )
|
||||
{
|
||||
return fract( sin( p.x * 151.0 + p.y * 33.0 + p.z ) * 11.0 );
|
||||
}
|
||||
|
||||
float smoothnoise(vec3 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec3 o= smoothstep(0.0,1.0,fract( p ));
|
||||
p= floor( p );
|
||||
|
||||
vec4 n= mix(
|
||||
vec4(
|
||||
noise3D( p+e.yyy),//n000,
|
||||
noise3D( p+e.xyy),//n100,
|
||||
noise3D( p+e.yxy),//n010,
|
||||
noise3D( p+e.xxy)),//n110),
|
||||
vec4(
|
||||
noise3D( p+e.yyx),//n001,
|
||||
noise3D( p+e.xyx),//n101,
|
||||
noise3D( p+e.yxx),//n011,
|
||||
noise3D( p+e.xxx)),//n111),
|
||||
o.z);
|
||||
e = mix(n.xy, n.zw, o.y);
|
||||
return mix(e.x, e.y, o.x);
|
||||
}*/
|
||||
|
||||
float plasm(float x, float a, float b,float c)
|
||||
{
|
||||
return sin(x+a+c*sin(x+b));
|
||||
}
|
||||
|
||||
float smin( float a, float b, float k )
|
||||
{
|
||||
float h = clamp( 0.5+0.5*(b-a)/k, 0.0, 1.0 );
|
||||
return mix( b, a, h ) - k*h*(1.0-h);
|
||||
}
|
||||
|
||||
float hash( vec2 p )
|
||||
{
|
||||
float h = dot(p,vec2(23.2,15.7));
|
||||
return fract(sin(h)*232.45);
|
||||
}
|
||||
|
||||
float noise(vec2 p)
|
||||
{
|
||||
vec2 e = vec2(1.0, 0.0);
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
f *= f*(3.0-2.0*f);
|
||||
return -0.5 + mix( mix( hash( i + e.yy ),
|
||||
hash( i + e.xy ), f.x),
|
||||
mix( hash( i + e.yx ),
|
||||
hash( i + e.xx ), f.x), f.y);
|
||||
}
|
||||
|
||||
float wHeight()
|
||||
{
|
||||
if (CurScene > 9)
|
||||
{
|
||||
return -22.0;
|
||||
}
|
||||
else if (CurScene == 9)
|
||||
{
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return min( 11.0, -33.0 + 22.0 * Y.x - CurScene * 11.0);
|
||||
}
|
||||
return 11.0 - CurTime * 33.0;
|
||||
}
|
||||
|
||||
float wdings(vec3 p, float t)
|
||||
{
|
||||
p.y -= wHeight();
|
||||
p.xy= rotate( p.xy, 2.3 * t );
|
||||
p.yz= rotate( p.yz, 1.9 * t );
|
||||
repeate(p.x, 10.0, 10.0);
|
||||
repeate(p.y, 10.0, 10.0);
|
||||
repeate(p.z, 10.0, 10.0);
|
||||
|
||||
vec2 e = vec2(6.0, 0.5);
|
||||
float b = min(min(CBox(p, e.xyy, 0.2), CBox(p, e.yxy, 0.2)), CBox(p, e.yyx, 0.2));
|
||||
return smin(length(p) - 3.0, b, 1.0);
|
||||
}
|
||||
float f0(vec3 p)
|
||||
{
|
||||
float w = wdings(p, CurTime - 0.02);
|
||||
float d = rayDir.y < 0. ? (p.y + 0.3)/rayDir.y : 999.0;
|
||||
d= smin (max(p.y, d), p.y + w - 2.0, 2.0);
|
||||
|
||||
if (CurScene > 9)
|
||||
{
|
||||
float Walk = (Y.x - 10.1) * 444.0;
|
||||
Walk = smoothstep( Walk - 166., Walk - 66.0, length(p.xz));
|
||||
d = p.y - Walk * 33.0 + 33. + 3.0 * (1.0 - Walk) * sin(length(p.xz) * 0.1 - CurTime * 66.0);
|
||||
}
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
p *= 0.4;
|
||||
p.x += CurTime;
|
||||
return d + abs (0.2 * noise(p.xz));
|
||||
}
|
||||
|
||||
float f0N(vec3 p)
|
||||
{
|
||||
float d = f0(p);
|
||||
if (d > 0.5)
|
||||
{
|
||||
return d;
|
||||
}
|
||||
|
||||
p /= 0.1;
|
||||
p.x += CurTime;
|
||||
d += abs (0.005 * noise(p.xz));
|
||||
p.x += CurTime;
|
||||
d += abs (0.01 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.02 * noise(p.xz));
|
||||
p /= 2.8;
|
||||
p.x += CurTime;
|
||||
d += abs (0.04 * noise(p.xz));
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
float f1(vec3 p)
|
||||
{
|
||||
return wdings(p, CurTime);
|
||||
}
|
||||
|
||||
float f2(vec3 p)
|
||||
{
|
||||
vec3 o = p;
|
||||
float b = length(o.xz) * 0.2;
|
||||
o.y -= 5.0 * b - 0.2 * b * b - 30.0;
|
||||
//repeate(o.y, 8.0, 16.0);
|
||||
repeatr(o.zx, 172.0 * Y.x - 1899.0, pi2 / 48.0);
|
||||
//o.z += 5.0 * hash(d);
|
||||
repeate(o.z, 44.0, 88.0);
|
||||
repeate(o.z, 4.0, 4.0);
|
||||
o.z = length(o.z) - 0.7;
|
||||
b = (o.z < 0.0 ? length( o.xy ): length( o )) - 1.0;
|
||||
|
||||
o = p;
|
||||
o.y -= wHeight();
|
||||
o.xy= rotate( o.xy, 2.3 * CurTime );
|
||||
o.yz= rotate( o.yz, 1.9 * CurTime );
|
||||
float a = max(
|
||||
max(
|
||||
CBox(o, vec3(11.0,11.0,11.0), 1.0),
|
||||
1.0 - wdings(p, CurTime)),
|
||||
length(o) - 6.0 * (Y.x - 6.2))
|
||||
- plasm(0.3 * p.x, 8.0 * CurTime, 0.3 * p.y, sin(0.3 *p.z));
|
||||
|
||||
a *= 0.5;
|
||||
if(CurScene > 9)
|
||||
return smin(a, b, 16.0);
|
||||
else if(CurScene > 8)
|
||||
return a;
|
||||
else
|
||||
{
|
||||
//float r = min(1.0, 1.0 + p.z + min( 0.0, Y.x * 44.0 - 377.0));
|
||||
float r = -min(-5.0, Y.x * 88.0 - 555.0) - p.z;
|
||||
r = 1. - (r < 0. ? 0. : 0.04 * r * r);
|
||||
p.x -= plasm(p.z * 0.3, 0.5, CurTime, 0.4);
|
||||
p.y -= 5.0 + plasm(p.z * 0.2, CurTime, 0.0, 1.2 + sin(CurTime));
|
||||
return smin( a, CBox2D(p.xy, vec2(r * 0.4, r), r * 0.4), 8.0);
|
||||
}
|
||||
}
|
||||
|
||||
float f3(vec3 p)
|
||||
{
|
||||
repeatr(p.zx, 88.0, pi2 / 6.0);
|
||||
repeatr(p.zx, 33.0, pi2 / 12.0);
|
||||
float d = length(p.x);
|
||||
return max(p.z - d + pow(d, 1.1), p.y - 44.0);
|
||||
}
|
||||
|
||||
|
||||
float f(vec3 p)
|
||||
{
|
||||
return min( min( min( f0(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
float fN(vec3 p)
|
||||
{
|
||||
return min( min( min(f0N(p), f1(p) ), f2(p) ), f3(p) );
|
||||
}
|
||||
|
||||
void mat(vec3 p)
|
||||
{
|
||||
float z= 0.1;
|
||||
|
||||
if( z > f1(p) )
|
||||
{
|
||||
z= f1(p);
|
||||
|
||||
HitMaterial = vec4(-2.0, 3.0, 0.7, 1.1);
|
||||
CurColor = vec3(1.0,1.5,1.8 );
|
||||
CurStep= .1;
|
||||
}
|
||||
|
||||
if( z > f2(p) )
|
||||
{
|
||||
z= f2(p);
|
||||
HitMaterial = vec4(-2.0, 0.8, 0.5, 1.2);
|
||||
CurColor = vec3(1.8,1.0,0.2);
|
||||
CurStep= 0.1;
|
||||
}
|
||||
|
||||
if( z > f3(p) )
|
||||
{
|
||||
z= f3(p);
|
||||
|
||||
HitMaterial = vec4(-1.0, 3., 0.8, 1.2);
|
||||
CurColor = vec3(.3,.2,.5);
|
||||
CurStep= .8;
|
||||
}
|
||||
|
||||
if( z > f0(p) )
|
||||
{
|
||||
HitMaterial = vec4(-1.0, 9.0, 0.95, 1.0);
|
||||
CurColor = vec3(.0,.0,.0 );
|
||||
CurStep= 0.6;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*void ToRes(vec3 Color, float Factor)
|
||||
{
|
||||
cRes+= Color * cFac;
|
||||
cFac*= Factor;
|
||||
}*/
|
||||
|
||||
vec3 lightSphere(vec3 normal, vec3 color, vec2 desc)
|
||||
{
|
||||
return smoothstep(desc.x, desc.y, dot(vec3( 0.86, 0.5, 0.0),normal)) * color;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
//Z = (gl_FragCoord.xy / Y.zw) * vec2(Y.z/Y.w, 1);
|
||||
|
||||
CurTime= fract(Y.x);
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
CurTime2= CurTime * CurTime;
|
||||
// Get the look direction for the current pixel (always look forwards)
|
||||
|
||||
rayDir = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.8);
|
||||
rayDir.x -= Y.z;
|
||||
|
||||
//Kamera sitzt an dieser Position
|
||||
vec3 p = vec3( 0.0, 11.0, -CurTime * 33.0);
|
||||
|
||||
if( CurScene < 1)
|
||||
{
|
||||
rayDir.yz= rotate( rayDir.yz, 1.5 - 2.0 * CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 + CurTime);
|
||||
}
|
||||
else if( CurScene < 2)
|
||||
{
|
||||
p = vec3( -33.0, 6.0, -3.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
}
|
||||
else if( CurScene < 3 )
|
||||
{
|
||||
p = vec3( 0.0, 6.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.4 - 0.6 *CurTime );
|
||||
//rayDir.xz= rotate( rayDir.xz, 0.0 );
|
||||
}
|
||||
else if( CurScene < 4 )
|
||||
{
|
||||
p = vec3( -44.0, 8.0, -40.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 + CurTime );
|
||||
}
|
||||
else if( CurScene < 5 )
|
||||
{
|
||||
////////////// Shader 1
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.7), 190.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0 * (1.0 - CurTime * 0.5) );
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}
|
||||
/*else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( -22.0, 11., 150.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.0 );
|
||||
//CurTime2 = CurTime;
|
||||
}*/
|
||||
else if( CurScene < 6 )
|
||||
{
|
||||
p= vec3( 11.0, 9.0, 111.* (1.0 - CurTime * 0.1));
|
||||
rayDir.yz= rotate( rayDir.yz, 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 + CurTime * 0.8 );
|
||||
}
|
||||
/*else if( CurScene < 8 )
|
||||
{
|
||||
p= vec3( -33.0, 7.0, 0.);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.0 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0);
|
||||
}*/
|
||||
else if( CurScene < 7 )
|
||||
{
|
||||
////////////// Shader 2
|
||||
p= vec3( 11.0, 33.* (1.0 - CurTime * 0.1), 11.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 2.0 );
|
||||
}
|
||||
else if( CurScene < 8 )
|
||||
{
|
||||
p = vec3( -22.0, 6.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, -0.2 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.2 );
|
||||
}
|
||||
else if( CurScene < 9 )
|
||||
{
|
||||
p= vec3( 11.0, 66.* (1.0 - CurTime * 0.3), 22.);
|
||||
rayDir.yz= rotate( rayDir.yz, 1.0);
|
||||
rayDir.xz= rotate( rayDir.xz, 3.0 );
|
||||
}
|
||||
else if( CurScene < 10 )
|
||||
{
|
||||
p = vec3( -22.0, 8.0, -22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, CurTime * 0.4 - 0.3 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.3 );
|
||||
}
|
||||
else if( CurScene < 11 )
|
||||
{
|
||||
////////////// Shader 3
|
||||
p= vec3( -66., 60.0, 22.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.4 );
|
||||
//CurTime = CurTime * 8.0 + 0.6;
|
||||
//CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else //if( CurScene < 12 )
|
||||
{
|
||||
p= vec3( -33., 22.0 * (1.0-CurTime), 11.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.5 );
|
||||
rayDir.xz= rotate( rayDir.xz, 5.0 );
|
||||
}
|
||||
/*else if( CurScene < 15 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 3.3), 88.0, -44.0);
|
||||
rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 2.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}
|
||||
else if( CurScene < 16 )
|
||||
{
|
||||
p= vec3( -99.0 * (1.0 - CurTime * 0.8 ), 12.0, 99.0);
|
||||
//rayDir.yz= rotate( rayDir.yz, 0.6 + CurTime );
|
||||
rayDir.xz= rotate( rayDir.xz, 4.5 );
|
||||
CurTime = CurTime * 8.0 + 0.6;
|
||||
CurTime2 = mod( CurTime, 1.0);
|
||||
}*/
|
||||
|
||||
//CurScene= Y.x - fract(Y.x);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Debugzeug fuer Kamerasteuerung
|
||||
if( true )
|
||||
{
|
||||
p.x= gl_ModelViewMatrix[0][0];
|
||||
p.y= gl_ModelViewMatrix[0][1];
|
||||
p.z= gl_ModelViewMatrix[0][2];
|
||||
|
||||
float a1= gl_ModelViewMatrix[1][1];
|
||||
float c1,s1;
|
||||
|
||||
//vec3 q1= vec3((Z.xy - 0.5), 0.6);
|
||||
|
||||
float ScreenHeight = Y.z;
|
||||
float AspectOffset = 1280.0 / 720.0 * 0.5 - 0.5; //= 0.445;
|
||||
|
||||
vec3 q1 = vec3((gl_FragCoord.xy / Y.y - 0.5), 0.6);
|
||||
q1.x -= Y.z;
|
||||
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.y = c1 * q1.y - s1 * q1.z;
|
||||
rayDir.x= q1.x;
|
||||
rayDir.z = s1 * q1.y + c1 * q1.z;
|
||||
|
||||
a1= gl_ModelViewMatrix[1][0];
|
||||
q1=rayDir;
|
||||
c1 = cos(a1); s1 = sin(a1);
|
||||
rayDir.x = c1 * q1.x + s1 * q1.z;
|
||||
rayDir.z = -s1 * q1.x + c1 * q1.z;
|
||||
}
|
||||
//Ende Debugzeug fuer Kamerasteuerung
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
rayDir = normalize(rayDir);
|
||||
|
||||
cRes= vec3( .0,.0,.0 );
|
||||
cFac=1.0;
|
||||
|
||||
//float t=smoothnoise( rayDir*666.0 )*0.1,y,z;
|
||||
//float t= 0.5 * plasm(999. * rayDir.x, 999. * rayDir.z, 999. * rayDir.y,999. * rayDir.z),y,z;
|
||||
float t= 0.0,y,z;
|
||||
|
||||
m=0;
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
vec3 fog =
|
||||
lightSphere(rayDir, LightColor, HitMaterial.zw);// +
|
||||
//lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
while(m++<2)
|
||||
{
|
||||
//bis zu einer Oberflaeche steppen
|
||||
//for (CurStep=1.0;t<999.0 && CurStep>t*.003;t+=0.01+max(0.0, CurStep),RayStep=rayDir*t )
|
||||
float ii = 80.0;
|
||||
for (CurStep=1.0;ii >=0.0 && t<999.0 && CurStep>t*.001;t+=CurStep,RayStep=rayDir*t,--ii )
|
||||
{
|
||||
CurStep = f(p+RayStep);
|
||||
}
|
||||
|
||||
if (ii <= 1)
|
||||
{
|
||||
ii = 0.;
|
||||
t = 999.3 ;
|
||||
RayStep=rayDir*t;
|
||||
break;
|
||||
}
|
||||
ii = smoothstep(44., 1., ii);
|
||||
|
||||
|
||||
vec3 NextPos = p+RayStep;
|
||||
|
||||
//Startpunkt und Richtung fuer reflektierten Strahl;
|
||||
p= NextPos;
|
||||
|
||||
CurNormal = vec2(0.04, 0.0);
|
||||
vec3 n= vec3( fN(p + CurNormal.xyy) - fN(p - CurNormal.xyy), fN(p + CurNormal.yxy) - fN(p - CurNormal.yxy), fN(p + CurNormal.yyx) - fN(p - CurNormal.yyx) );
|
||||
|
||||
// float gradlen = length(n / (2 * CurNormal.x));
|
||||
// float error = abs(gradlen - 1.0);
|
||||
// gl_FragColor.xyz = mix(vec3(0.0, 1.0, 0.0), vec3(1.0, 0.0, 0.0), error);
|
||||
// return;
|
||||
|
||||
//CurNormal = vec2(0.0, 0.0);
|
||||
mat(p);
|
||||
//n.xz += CurNormal;
|
||||
n= normalize(n);
|
||||
//CurStep ab hier == Reflektion !!!
|
||||
|
||||
if( t > 999.0)
|
||||
{
|
||||
if( m < 2)
|
||||
{
|
||||
HitMaterial = vec4(-3.0, 8.0, 0.98, 1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
rayDir= reflect( rayDir, n );
|
||||
|
||||
//float ao(vec3 p, vec3 n, float d, float i) {
|
||||
y= 8.0;
|
||||
for (z=1.0;y>0.;y--)
|
||||
{
|
||||
z-=.5*(y-f(p+n*y))/exp2(y);
|
||||
}
|
||||
CurColor*= z;
|
||||
CurColor*= lightSphere(rayDir, BackColor, HitMaterial.xy);
|
||||
|
||||
cRes+= cFac*mix(CurColor, fog, ii);//*(1.0-Reflect);
|
||||
cFac*= CurStep;// Reflect * (1.0-t/tmax);
|
||||
t= 0.5;
|
||||
RayStep = rayDir * t;
|
||||
}
|
||||
|
||||
gl_FragColor.xyz = smoothstep(11.92, 11.8, Y.x) * (cRes + cFac*
|
||||
( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
lightSphere(rayDir, BackColor, HitMaterial.xy)));
|
||||
//gl_FragColor.xyz = smoothstep(-12.0, -11.8, -Y.x) * mix((cRes + cFac*
|
||||
// ( lightSphere(rayDir, LightColor, HitMaterial.zw) +
|
||||
// lightSphere(rayDir, BackColor, HitMaterial.xy))), fog, fogAmount / 2.0);
|
||||
}
|
||||
272
evoke-64k/ev15-4k/mark_small.h
Normal file
272
evoke-64k/ev15-4k/mark_small.h
Normal file
@@ -0,0 +1,272 @@
|
||||
/* File generated with Shader Minifier 1.1.1
|
||||
* http://www.ctrl-alt-test.fr
|
||||
*/
|
||||
#ifndef MARK_SMALL_H_
|
||||
# define MARK_SMALL_H_
|
||||
# define U_Y "v"
|
||||
|
||||
char mark_fs_0[] = ""
|
||||
"const int z=0x0;"
|
||||
"uniform vec3 v;"
|
||||
"float i,y,f,m,l=6.28319;"
|
||||
"int e;"
|
||||
"vec2 r;"
|
||||
"vec3 x,a,s=vec3(0.),w=vec3(0.),d=vec3(5.,4.5,4.),t=vec3(.7,.9,1.2);"
|
||||
"vec4 b;"
|
||||
"vec2 n(vec2 a,float z)"
|
||||
"{"
|
||||
"return cos(z)*a+sin(z)*vec2(-a.y,a.x);"
|
||||
"}"
|
||||
"float n(inout vec2 a,float v,float y)"
|
||||
"{"
|
||||
"float z=atan(a.y,a.x),m=mod(z,y)-y*.5;"
|
||||
"a=length(a)*vec2(cos(m),sin(m));"
|
||||
"a.x-=v;"
|
||||
"return z-m;"
|
||||
"}"
|
||||
"void h(inout float z,float y)"
|
||||
"{"
|
||||
"z=mod(z-y*.5,y)-y*.5;"
|
||||
"}"
|
||||
"void h(inout float z,float y,float x)"
|
||||
"{"
|
||||
"z=max(abs(z)-x,mod(z-y*.5,y)-y*.5);"
|
||||
"}"
|
||||
"float p(in vec3 z,in vec3 y,float a)"
|
||||
"{"
|
||||
"return length(max(abs(z)-y+vec3(a),0.))-a;"
|
||||
"}"
|
||||
"float c(in vec2 z,in vec2 y,float a)"
|
||||
"{"
|
||||
"return length(max(abs(z)-y+vec2(a),0.))-a;"
|
||||
"}"
|
||||
"float c(float z,float y,float x,float i)"
|
||||
"{"
|
||||
"return sin(z+y+i*sin(z+x));"
|
||||
"}"
|
||||
"float o(float y,float z,float x)"
|
||||
"{"
|
||||
"float a=clamp(.5+.5*(z-y)/x,0.,1.);"
|
||||
"return mix(z,y,a)-x*a*(1.-a);"
|
||||
"}"
|
||||
"float c(vec2 z)"
|
||||
"{"
|
||||
"float a=dot(z,vec2(23.2,15.7));"
|
||||
"return fract(sin(a)*232.45);"
|
||||
"}"
|
||||
"float h(vec2 z)"
|
||||
"{"
|
||||
"vec2 a=vec2(1.,0.),m=floor(z),y=fract(z);"
|
||||
"y*=y*(3.-2.*y);"
|
||||
"return-.5+mix(mix(c(m+a.yy),c(m+a.xy),y.x),mix(c(m+a.yx),c(m+a.xx),y.x),y.y);"
|
||||
"}"
|
||||
"float c()"
|
||||
"{"
|
||||
"if(z>9)"
|
||||
"return-22.;"
|
||||
"else"
|
||||
" if(z==9)"
|
||||
"return 11.-y*33.;"
|
||||
"else"
|
||||
" return min(11.,-33.+22.*v.x-z*11.);"
|
||||
"return 11.-y*33.;"
|
||||
"}"
|
||||
"float c(vec3 a,float y)"
|
||||
"{"
|
||||
"a.y-=c();"
|
||||
"a.xy=n(a.xy,2.3*y);"
|
||||
"a.yz=n(a.yz,1.9*y);"
|
||||
"h(a.x,10.,10.);"
|
||||
"h(a.y,10.,10.);"
|
||||
"h(a.z,10.,10.);"
|
||||
"vec2 z=vec2(6.,.5);"
|
||||
"float m=min(min(p(a,z.xyy,.2),p(a,z.yxy,.2)),p(a,z.yyx,.2));"
|
||||
"return o(length(a)-3.,m,1.);"
|
||||
"}"
|
||||
"float n(vec3 m)"
|
||||
"{"
|
||||
"float i=c(m,y-.02),f=a.y<0.?(m.y+.3)/a.y:999.;"
|
||||
"f=o(max(m.y,f),m.y+i-2.,2.);"
|
||||
"if(z>9)"
|
||||
"{"
|
||||
"float x=(v.x-10.1)*444.;"
|
||||
"x=smoothstep(x-166.,x-66.,length(m.xz));"
|
||||
"f=m.y-x*33.+33.+3.*(1.-x)*sin(length(m.xz)*.1-y*66.);"
|
||||
"}"
|
||||
"if(f>.5)"
|
||||
"return f;"
|
||||
"m*=.4;"
|
||||
"m.x+=y;"
|
||||
"return f+abs(.2*h(m.xz));"
|
||||
"}"
|
||||
"float o(vec3 a)"
|
||||
"{"
|
||||
"float z=n(a);"
|
||||
"if(z>.5)"
|
||||
"return z;"
|
||||
"a/=.1;"
|
||||
"a.x+=y;"
|
||||
"z+=abs(.005*h(a.xz));"
|
||||
"a.x+=y;"
|
||||
"z+=abs(.01*h(a.xz));"
|
||||
"a/=2.8;"
|
||||
"a.x+=y;"
|
||||
"z+=abs(.02*h(a.xz));"
|
||||
"a/=2.8;"
|
||||
"a.x+=y;"
|
||||
"z+=abs(.04*h(a.xz));"
|
||||
"return z;"
|
||||
"}"
|
||||
"float p(vec3 z)"
|
||||
"{"
|
||||
"return c(z,y);"
|
||||
"}"
|
||||
"float u(vec3 a)"
|
||||
"{"
|
||||
"vec3 m=a;"
|
||||
"float i=length(m.xz)*.2;"
|
||||
"m.y-=5.*i-.2*i*i-30.;"
|
||||
"n(m.zx,172.*v.x-1899.,l/48.);"
|
||||
"h(m.z,44.,88.);"
|
||||
"h(m.z,4.,4.);"
|
||||
"m.z=length(m.z)-.7;"
|
||||
"i=(m.z<0.?length(m.xy):length(m))-1.;"
|
||||
"m=a;"
|
||||
"m.y-=c();"
|
||||
"m.xy=n(m.xy,2.3*y);"
|
||||
"m.yz=n(m.yz,1.9*y);"
|
||||
"float x=max(max(p(m,vec3(11.,11.,11.),1.),1.-c(a,y)),length(m)-6.*(v.x-6.2))-c(.3*a.x,8.*y,.3*a.y,sin(.3*a.z));"
|
||||
"x*=.5;"
|
||||
"if(z>9)"
|
||||
"return o(x,i,16.);"
|
||||
"else"
|
||||
" if(z>8)"
|
||||
"return x;"
|
||||
"else"
|
||||
"{"
|
||||
"float f=-min(-5.,v.x*88.-555.)-a.z;"
|
||||
"f=1.-(f<0.?0.:.04*f*f);"
|
||||
"a.x-=c(a.z*.3,.5,y,.4);"
|
||||
"a.y-=5.+c(a.z*.2,y,0.,1.2+sin(y));"
|
||||
"return o(x,c(a.xy,vec2(f*.4,f),f*.4),8.);"
|
||||
"}"
|
||||
"}"
|
||||
"float g(vec3 a)"
|
||||
"{"
|
||||
"n(a.zx,88.,l/6.);"
|
||||
"n(a.zx,33.,l/12.);"
|
||||
"float z=length(a.x);"
|
||||
"return max(a.z-z+pow(z,1.1),a.y-44.);"
|
||||
"}"
|
||||
"float F(vec3 a)"
|
||||
"{"
|
||||
"return min(min(min(n(a),p(a)),u(a)),g(a));"
|
||||
"}"
|
||||
"float C(vec3 a)"
|
||||
"{"
|
||||
"return min(min(min(o(a),p(a)),u(a)),g(a));"
|
||||
"}"
|
||||
"void k(vec3 a)"
|
||||
"{"
|
||||
"float z=.1;"
|
||||
"if(z>p(a))"
|
||||
"z=p(a),b=vec4(-2.,3.,.7,1.1),s=vec3(1.,1.5,1.8),m=.1;"
|
||||
"if(z>u(a))"
|
||||
"z=u(a),b=vec4(-2.,.8,.5,1.2),s=vec3(1.8,1.,.2),m=.1;"
|
||||
"if(z>g(a))"
|
||||
"z=g(a),b=vec4(-1.,3.,.8,1.2),s=vec3(.3,.2,.5),m=.8;"
|
||||
"if(z>n(a))"
|
||||
"b=vec4(-1.,9.,.95,1.),s=vec3(0.,0.,0.),m=.6;"
|
||||
"}"
|
||||
"vec3 C(vec3 a,vec3 z,vec2 m)"
|
||||
"{"
|
||||
"return smoothstep(m.x,m.y,dot(vec3(.86,.5,0.),a))*z;"
|
||||
"}"
|
||||
"void main()"
|
||||
"{"
|
||||
"y=fract(v.x);"
|
||||
"f=y*y;"
|
||||
"a=vec3(gl_FragCoord.xy/v.y-.5,.8);"
|
||||
"a.x-=v.z;"
|
||||
"vec3 l=vec3(0.,11.,-y*33.);"
|
||||
"if(z<1)"
|
||||
"a.yz=n(a.yz,1.5-2.*y),a.xz=n(a.xz,4.+y);"
|
||||
"else"
|
||||
" if(z<2)"
|
||||
"l=vec3(-33.,6.,-3.),a.yz=n(a.yz,.2),a.xz=n(a.xz,4.4);"
|
||||
"else"
|
||||
" if(z<3)"
|
||||
"l=vec3(0.,6.,-22.),a.yz=n(a.yz,.4-.6*y);"
|
||||
"else"
|
||||
" if(z<4)"
|
||||
"l=vec3(-44.,8.,-40.),a.yz=n(a.yz,0.),a.xz=n(a.xz,4.5+y);"
|
||||
"else"
|
||||
" if(z<5)"
|
||||
"l=vec3(11.,66.*(1.-y*.7),190.),a.yz=n(a.yz,1.-y*.5),a.xz=n(a.xz,3.);"
|
||||
"else"
|
||||
" if(z<6)"
|
||||
"l=vec3(11.,9.,111.*(1.-y*.1)),a.yz=n(a.yz,.3),a.xz=n(a.xz,2.+y*.8);"
|
||||
"else"
|
||||
" if(z<7)"
|
||||
"l=vec3(11.,33.*(1.-y*.1),11.),a.yz=n(a.yz,1.),a.xz=n(a.xz,2.);"
|
||||
"else"
|
||||
" if(z<8)"
|
||||
"l=vec3(-22.,6.,22.),a.yz=n(a.yz,-.2),a.xz=n(a.xz,4.2);"
|
||||
"else"
|
||||
" if(z<9)"
|
||||
"l=vec3(11.,66.*(1.-y*.3),22.),a.yz=n(a.yz,1.),a.xz=n(a.xz,3.);"
|
||||
"else"
|
||||
" if(z<10)"
|
||||
"l=vec3(-22.,8.,-22.),a.yz=n(a.yz,y*.4-.3),a.xz=n(a.xz,5.3);"
|
||||
"else"
|
||||
" if(z<11)"
|
||||
"l=vec3(-66.,60.,22.),a.yz=n(a.yz,.6),a.xz=n(a.xz,4.4);"
|
||||
"else"
|
||||
" l=vec3(-33.,22.*(1.-y),11.),a.yz=n(a.yz,.5),a.xz=n(a.xz,5.);"
|
||||
"a=normalize(a);"
|
||||
"x=vec3(0.,0.,0.);"
|
||||
"i=1.;"
|
||||
"float o=0.,p,g;"
|
||||
"e=0;"
|
||||
"b=vec4(-3.,8.,.98,1.);"
|
||||
"vec3 c=C(a,d,b.zw);"
|
||||
"while(e++<2)"
|
||||
"{"
|
||||
"float u=80.;"
|
||||
"for(m=1.;u>=0.&&o<999.&&m>o*.001;o+=m,w=a*o,--u)"
|
||||
"m=F(l+w);"
|
||||
"if(u<=1)"
|
||||
"{"
|
||||
"u=0.;"
|
||||
"o=999.3;"
|
||||
"w=a*o;"
|
||||
"break;"
|
||||
"}"
|
||||
"u=smoothstep(44.,1.,u);"
|
||||
"vec3 h=l+w;"
|
||||
"l=h;"
|
||||
"r=vec2(.04,0.);"
|
||||
"vec3 Z=vec3(C(l+r.xyy)-C(l-r.xyy),C(l+r.yxy)-C(l-r.yxy),C(l+r.yyx)-C(l-r.yyx));"
|
||||
"k(l);"
|
||||
"Z=normalize(Z);"
|
||||
"if(o>999.)"
|
||||
"{"
|
||||
"if(e<2)"
|
||||
"b=vec4(-3.,8.,.98,1.);"
|
||||
"break;"
|
||||
"}"
|
||||
"a=reflect(a,Z);"
|
||||
"p=8.;"
|
||||
"for(g=1.;p>0.;p--)"
|
||||
"g-=.5*(p-F(l+Z*p))/exp2(p);"
|
||||
"s*=g;"
|
||||
"s*=C(a,t,b.xy);"
|
||||
"x+=i*mix(s,c,u);"
|
||||
"i*=m;"
|
||||
"o=.5;"
|
||||
"w=a*o;"
|
||||
"}"
|
||||
"gl_FragColor.xyz=smoothstep(11.92,11.8,v.x)*(x+i*(C(a,d,b.zw)+C(a,t,b.xy)));"
|
||||
"}";
|
||||
|
||||
#endif // MARK_SMALL_H_
|
||||
784
evoke-64k/ev15-4k/patterns.dbg
Normal file
784
evoke-64k/ev15-4k/patterns.dbg
Normal file
@@ -0,0 +1,784 @@
|
||||
Instrument0:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, HLD, 72, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, 72, HLD, 72, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, 72, HLD, 72, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument1:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument2:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 72, HLD,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0,
|
||||
Instrument3:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 59, 59,
|
||||
0, 0, 0, 0, 0, 0, 0, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 67, 59, 59,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument4:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 59, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument5:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
60, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60,
|
||||
65, 65, 0, 0, 0, 0, 65, 0, 65, 0, 0, 0, 0, 0, 0, 65,
|
||||
61, 61, 0, 0, 0, 0, 61, 0, 61, 0, 0, 0, 0, 0, 0, 61,
|
||||
63, 63, 0, 0, 0, 0, 63, 0, 63, 0, 0, 0, 0, 0, 0, 63,
|
||||
60, 60, 0, 0, 0, 0, 60, 0, 60, 0, 0, 0, 0, 0, 0, 60,
|
||||
65, 65, 0, 0, 0, 0, 65, 0, 65, 0, 0, 0, 0, 0, 0, 65,
|
||||
58, 58, 0, 0, 0, 0, 58, 0, 58, 0, 0, 0, 0, 0, 0, 58,
|
||||
63, 63, 0, 0, 0, 0, 63, 0, 63, 0, 0, 0, 0, 0, 0, 63,
|
||||
63, 63, 0, 0, 0, 0, 63, 0, 63, 0, 0, 0, 0, 0, 0, 63,
|
||||
59, 59, 0, 0, 0, 0, 59, 0, 59, 0, 0, 0, 0, 0, 0, 59,
|
||||
68, 68, 0, 0, 0, 0, 68, 0, 68, 0, 0, 0, 0, 0, 0, 68,
|
||||
58, 58, 0, 0, 0, 0, 58, 0, 58, 0, 0, 0, 0, 0, 0, 58,
|
||||
67, 67, 0, 0, 0, 0, 67, 0, 67, 0, 0, 0, 0, 0, 0, 67,
|
||||
59, 59, 0, 0, 0, 0, 59, 0, 59, 0, 0, 0, 0, 0, 0, 59,
|
||||
65, 65, 0, 0, 0, 0, 65, 0, 65, 0, 0, 0, 0, 0, 0, 65,
|
||||
70, 70, 0, 0, 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 70,
|
||||
70, 70, 0, 0, 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 70,
|
||||
59, 59, 0, 0, 0, 0, 59, 0, 59, 0, 0, 0, 0, 0, 0, 59,
|
||||
68, 68, 0, 0, 0, 0, 68, 0, 68, 0, 0, 0, 0, 0, 0, 68,
|
||||
58, 58, 0, 0, 0, 0, 58, 0, 58, 0, 0, 0, 0, 0, 0, 58,
|
||||
67, 67, 0, 0, 0, 0, 67, 0, 67, 0, 0, 0, 0, 0, 0, 67,
|
||||
59, 59, 0, 0, 0, 0, 59, 0, 59, 0, 0, 0, 0, 0, 0, 59,
|
||||
65, 65, 0, 0, 0, 0, 65, 0, 65, 0, 0, 0, 0, 0, 0, 65,
|
||||
70, 70, 0, 0, 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 70,
|
||||
70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
|
||||
59, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument6:
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
55, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 73, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
52, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 73, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
55, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
54, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 69, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
52, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
57, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 73, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
66, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
62, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 81, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
49, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 68, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
66, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 83, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
83, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
66, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
62, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 81, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
49, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 68, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
66, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
59, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 80, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
42, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument7:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
66, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
71, 59, 59, 71, 59, 59, 71, 59, 59, 71, 59, 71, 59, 59, 71, 59,
|
||||
67, 55, 55, 67, 55, 55, 67, 55, 55, 67, 55, 67, 55, 55, 67, 55,
|
||||
69, 57, 57, 69, 57, 57, 69, 57, 57, 69, 57, 69, 57, 57, 69, 57,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
71, 59, 59, 71, 59, 59, 71, 59, 59, 71, 59, 71, 59, 59, 71, 59,
|
||||
64, 52, 52, 64, 52, 52, 64, 52, 52, 64, 52, 64, 52, 52, 64, 52,
|
||||
69, 57, 57, 69, 57, 57, 69, 57, 57, 69, 57, 69, 57, 57, 69, 57,
|
||||
69, 57, 57, 69, 57, 57, 69, 57, 57, 69, 57, 69, 57, 57, 69, 57,
|
||||
54, 42, 42, 54, 42, 42, 54, 42, 42, 54, 42, 54, 42, 42, 54, 42,
|
||||
62, 50, 50, 62, 50, 50, 62, 50, 50, 62, 50, 62, 50, 50, 62, 50,
|
||||
64, 52, 52, 64, 52, 52, 64, 52, 52, 64, 52, 64, 52, 52, 64, 52,
|
||||
61, 49, 49, 61, 49, 49, 61, 49, 49, 61, 49, 61, 49, 49, 61, 49,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
71, 59, 59, 71, 59, 59, 71, 59, 59, 71, 59, 71, 59, 59, 71, 59,
|
||||
76, 64, 64, 76, 64, 64, 76, 64, 64, 76, 64, 76, 64, 64, 76, 64,
|
||||
76, 64, 64, 76, 64, 64, 76, 64, 64, 76, 64, 76, 64, 64, 76, 64,
|
||||
54, 42, 42, 54, 42, 42, 54, 42, 42, 54, 42, 54, 42, 42, 54, 42,
|
||||
62, 50, 50, 62, 50, 50, 62, 50, 50, 62, 50, 62, 50, 50, 62, 50,
|
||||
64, 52, 52, 64, 52, 52, 64, 52, 52, 64, 52, 64, 52, 52, 64, 52,
|
||||
61, 49, 49, 61, 49, 49, 61, 49, 49, 61, 49, 61, 49, 49, 61, 49,
|
||||
66, 54, 54, 66, 54, 54, 66, 54, 54, 66, 54, 66, 54, 54, 66, 54,
|
||||
71, 59, 59, 71, 59, 59, 71, 59, 59, 71, 59, 71, 59, 59, 71, 59,
|
||||
64, 52, 52, 64, 52, 52, 64, 52, 52, 64, 52, 64, 52, 52, 64, 52,
|
||||
64, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument8:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument9:
|
||||
71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
78, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
78, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
88, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
78, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
78, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
88, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument10:
|
||||
74, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, 69, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, 67, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, 81, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 57, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 52, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 57, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 54, 59, 61, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 57, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 52, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 69, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 66, 71, 73, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, 71, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, 69, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, 67, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
74, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, 81, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
81, HLD, HLD, HLD, HLD, HLD, 85, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
81, HLD, HLD, HLD, HLD, HLD, 83, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
81, HLD, HLD, HLD, HLD, HLD, 85, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
76, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD, HLD, HLD, 80, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
81, HLD, HLD, HLD, HLD, HLD, 85, HLD, HLD, HLD, HLD, HLD, 78, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
81, HLD, HLD, HLD, HLD, HLD, 83, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
81, HLD, HLD, HLD, HLD, HLD, 85, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD,
|
||||
HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
42, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
30, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument11:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
43, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
42, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
40, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
45, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
54, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
50, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
52, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
49, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
54, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
52, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
40, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
54, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
50, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
52, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
49, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
54, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
47, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
40, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument12:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument13:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument14:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument15:
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
163
evoke-64k/ev15-4k/shader_code.h
Normal file
163
evoke-64k/ev15-4k/shader_code.h
Normal file
@@ -0,0 +1,163 @@
|
||||
/* File generated with Shader Minifier 1.0.3
|
||||
* http://www.ctrl-alt-test.fr
|
||||
*/
|
||||
#ifndef SHADER_CODE_H_
|
||||
# define SHADER_CODE_H_
|
||||
# define V_Y "v"
|
||||
# define V_Z "m"
|
||||
|
||||
const char *mark_fs = ""
|
||||
"varying vec4 v;"
|
||||
"varying vec2 m;"
|
||||
"vec3 f,z;"
|
||||
"float x=6.28319;"
|
||||
"vec2 n(vec2 f,float v)"
|
||||
"{"
|
||||
"return cos(v)*f+sin(v)*vec2(-f.y,f.x);"
|
||||
"}"
|
||||
"void i(inout vec3 v,float f)"
|
||||
"{"
|
||||
"float z=mod(atan(v.z,v.x),f)-f*.5;"
|
||||
"v.xz=length(v.xz)*vec2(cos(z),sin(z));"
|
||||
"}"
|
||||
"float i(vec3 v,float f,float z)"
|
||||
"{"
|
||||
"return length(vec2(length(v.xz)-f,v.y))-z;"
|
||||
"}"
|
||||
"float s(vec3 v,float z)"
|
||||
"{"
|
||||
"return length(v)-z;"
|
||||
"}"
|
||||
"float i(vec3 v)"
|
||||
"{"
|
||||
"return v.y+.6;"
|
||||
"}"
|
||||
"float n(vec3 v)"
|
||||
"{"
|
||||
"return min(s(v+vec3(0,8.,0),8.5),i(v,2.3,.5));"
|
||||
"}"
|
||||
"float s(vec3 v)"
|
||||
"{"
|
||||
"float z=max(s(v,6.),v.y);"
|
||||
"i(v,x/64.);"
|
||||
"v.x=abs(v.x-5.)-2.;"
|
||||
"float f=mix(length(v.yz),length(v.xyz),step(0.,v.x));"
|
||||
"return min(z,f-.4);"
|
||||
"}"
|
||||
"float l(vec3 f)"
|
||||
"{"
|
||||
"return f.y-=4.,f.xz=n(f.xz,v.y*6.),i(f,x/12.),f.yz=n(f.yz,x/4.),min(i(f,2.,.15),s(f,1.5));"
|
||||
"}"
|
||||
"float h(vec3 v)"
|
||||
"{"
|
||||
"return min(min(min(i(v),n(v)),s(v)),l(v));"
|
||||
"}"
|
||||
"int g(vec3 v)"
|
||||
"{"
|
||||
"float z=1000.;"
|
||||
"int f;"
|
||||
"if(i(v)<z)"
|
||||
"z=i(v),f=0;"
|
||||
"if(n(v)<z)"
|
||||
"z=n(v),f=1;"
|
||||
"if(s(v)<z)"
|
||||
"z=s(v),f=2;"
|
||||
"if(l(v)<z)"
|
||||
"z=l(v),f=3;"
|
||||
"return f;"
|
||||
"}"
|
||||
"vec3 p(vec3 v)"
|
||||
"{"
|
||||
"vec3 z=vec3(.04,0.,0.),f;"
|
||||
"f.x=h(v+z.xyy)-h(v-z.xyy);"
|
||||
"f.y=h(v+z.yxy)-h(v-z.yxy);"
|
||||
"f.z=h(v+z.yyx)-h(v-z.yyx);"
|
||||
"return normalize(f);"
|
||||
"}"
|
||||
"float e(vec3 v)"
|
||||
"{"
|
||||
"float z=1.;"
|
||||
"for(float f=.2;f<12.;f=f*1.1+.125)"
|
||||
"z+=min(h(v+vec3(0.,1.,0.)*f),0.);"
|
||||
"return clamp(z,.2,1.);"
|
||||
"}"
|
||||
"float e(vec3 v,vec3 f,float z,float i)"
|
||||
"{"
|
||||
"float x,y=sign(z);"
|
||||
"for(x=y*.5+.5;i>0.;i--)"
|
||||
"x-=(i*z-h(v+f*i*z*y))/exp2(i);"
|
||||
"return x;"
|
||||
"}"
|
||||
"vec3 t(vec3 v)"
|
||||
"{"
|
||||
"float z=.3+.3*dot(v,vec3(0.,1.,0.));"
|
||||
"i(v,x/16.);"
|
||||
"v.x=abs(v.x-.2)-.08;"
|
||||
"float f=mix(abs(v.z),length(v.xz),step(0.,v.x));"
|
||||
"z+=pow(smoothstep(.1,0.,f),15.);"
|
||||
"return vec3(z);"
|
||||
"}"
|
||||
"float c(vec3 v)"
|
||||
"{"
|
||||
"float z=abs(v.y-.9);"
|
||||
"return.4+.3*(1-z);"
|
||||
"}"
|
||||
"void main()"
|
||||
"{"
|
||||
"int x=int(v.y);"
|
||||
"float y=mod(v.y,1.);"
|
||||
"z=vec3(m.xy-.5,1);"
|
||||
"f=vec3(-30.-y*5.,3.,-16.+y*24.);"
|
||||
"z.xz=n(z.xz,y*-2.5);"
|
||||
"if(false)"
|
||||
"{"
|
||||
"f.x=gl_ModelViewMatrix[0][0];"
|
||||
"f.y=gl_ModelViewMatrix[0][1];"
|
||||
"f.z=gl_ModelViewMatrix[0][2];"
|
||||
"float i=gl_ModelViewMatrix[1][1],s,r;"
|
||||
"vec3 l=vec3(m.xy-.5,1);"
|
||||
"s=cos(i);"
|
||||
"r=sin(i);"
|
||||
"z.y=s*l.y-r*l.z;"
|
||||
"z.x=l.x;"
|
||||
"z.z=r*l.y+s*l.z;"
|
||||
"i=gl_ModelViewMatrix[1][0];"
|
||||
"l=z;"
|
||||
"s=cos(i);"
|
||||
"r=sin(i);"
|
||||
"z.x=s*l.x+r*l.z;"
|
||||
"z.z=-r*l.x+s*l.z;"
|
||||
"}"
|
||||
"z=normalize(z);"
|
||||
"vec3 i=vec3(0.,0.,0.);"
|
||||
"float s=1.,l=0.,r=256.,a;"
|
||||
"while(s>.1)"
|
||||
"{"
|
||||
"for(a=1.;l<r&&a>.05;l+=a)"
|
||||
"a=h(f+z*l);"
|
||||
"if(l<r)"
|
||||
"{"
|
||||
"f+=z*l;"
|
||||
"vec3 o=p(f);"
|
||||
"z=reflect(z,o);"
|
||||
"l=.1;"
|
||||
"vec3 d=vec3(.3,.2,.1);"
|
||||
"float u=.125;"
|
||||
"int M=g(f);"
|
||||
"if(M==1)"
|
||||
"d=vec3(.1,.1,.1),u=.8;"
|
||||
"if(M==2)"
|
||||
"d=vec3(.4,.3,.03),u=.2;"
|
||||
"if(M==3)"
|
||||
"d=vec3(.7,0.,0.),u=.2;"
|
||||
"d*=c(o)*e(f)*e(f,o,.4,10.);"
|
||||
"i+=s*d;"
|
||||
"s*=u;"
|
||||
"}"
|
||||
"else"
|
||||
" i+=s*t(z),s=0.;"
|
||||
"}"
|
||||
"gl_FragColor.xyz=i;"
|
||||
"}";
|
||||
|
||||
#endif // SHADER_CODE_H_
|
||||
BIN
evoke-64k/ev15-4k/shader_minifier.exe
Normal file
BIN
evoke-64k/ev15-4k/shader_minifier.exe
Normal file
Binary file not shown.
24
evoke-64k/ev15-4k/switches.txt
Normal file
24
evoke-64k/ev15-4k/switches.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
/O1
|
||||
/Oi
|
||||
/Os
|
||||
/D "WIN32"
|
||||
/D "NDEBUG"
|
||||
/D "_WINDOWS"
|
||||
/FD
|
||||
/MT
|
||||
/GS-
|
||||
/GR-
|
||||
/Fp".\obj\bp4k_Compress (Slow)/cmath.pch"
|
||||
/FAs
|
||||
/Fa".\obj\bp4k_Compress (Slow)/"
|
||||
/Fo".\obj\bp4k_Compress (Slow)/"
|
||||
/Fd".\obj\bp4k_Compress (Slow)/"
|
||||
/FR".\obj\bp4k_Compress (Slow)\\"
|
||||
/W0
|
||||
/nologo
|
||||
/c
|
||||
/Zi
|
||||
/Gz
|
||||
/TP
|
||||
/errorReport:prompt
|
||||
/QIfist
|
||||
79
evoke-64k/ev15-4k/synth.h
Normal file
79
evoke-64k/ev15-4k/synth.h
Normal file
@@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_EXTRA_LEAN
|
||||
#include "windows.h"
|
||||
#include "mmsystem.h"
|
||||
#include "mmreg.h"
|
||||
#include "4klang.h"
|
||||
|
||||
#define USE_SOUND_THREAD
|
||||
|
||||
#pragma bss_seg(".synthnothing")
|
||||
static float lpSoundBuffer[MAX_SAMPLES * 2];
|
||||
static HWAVEOUT hWaveOut;
|
||||
|
||||
#pragma data_seg(".wavefmt")
|
||||
WAVEFORMATEX WaveFMT =
|
||||
{
|
||||
#ifdef FLOAT_32BIT
|
||||
WAVE_FORMAT_IEEE_FLOAT,
|
||||
#else
|
||||
WAVE_FORMAT_PCM,
|
||||
#endif
|
||||
2, // channels
|
||||
SAMPLE_RATE, // samples per sec
|
||||
SAMPLE_RATE*sizeof(SAMPLE_TYPE)* 2, // bytes per sec
|
||||
sizeof(SAMPLE_TYPE)* 2, // block alignment;
|
||||
sizeof(SAMPLE_TYPE)* 8, // bits per sample
|
||||
0 // extension not needed
|
||||
};
|
||||
|
||||
#pragma data_seg(".wavehdr")
|
||||
WAVEHDR WaveHDR =
|
||||
{
|
||||
(LPSTR)lpSoundBuffer,
|
||||
MAX_SAMPLES*sizeof(SAMPLE_TYPE)* 2, // MAX_SAMPLES*sizeof(float)*2(stereo)
|
||||
0,
|
||||
0,
|
||||
WHDR_PREPARED,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
#pragma data_seg(".mmtime")
|
||||
MMTIME MMTime =
|
||||
{
|
||||
TIME_SAMPLES,
|
||||
0
|
||||
};
|
||||
|
||||
#ifndef _DEBUG
|
||||
#pragma code_seg(".initsnd")
|
||||
#endif
|
||||
__forceinline void InitSound()
|
||||
{
|
||||
#ifdef USE_SOUND_THREAD
|
||||
::CreateThread(0, 0, (LPTHREAD_START_ROUTINE)_4klang_render, lpSoundBuffer, 0, 0);
|
||||
#else
|
||||
_4klang_render(lpSoundBuffer);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef _DEBUG
|
||||
#pragma code_seg(".playsnd")
|
||||
#endif
|
||||
__forceinline void PlaySound()
|
||||
{
|
||||
waveOutOpen(&hWaveOut, WAVE_MAPPER, &WaveFMT, NULL, 0, CALLBACK_NULL);
|
||||
//waveOutPrepareHeader( hWaveOut, &WaveHDR, sizeof(WaveHDR) );
|
||||
waveOutWrite(hWaveOut, &WaveHDR, sizeof(WaveHDR));
|
||||
}
|
||||
|
||||
#ifndef _DEBUG
|
||||
#pragma code_seg(".sample")
|
||||
#endif
|
||||
__forceinline void get_Sample()
|
||||
{
|
||||
waveOutGetPosition(hWaveOut, &MMTime, sizeof(MMTIME));
|
||||
}
|
||||
BIN
evoke-64k/ev15-4k/yasm-1.2.0-win32.exe
Normal file
BIN
evoke-64k/ev15-4k/yasm-1.2.0-win32.exe
Normal file
Binary file not shown.
Reference in New Issue
Block a user