This commit is contained in:
2025-05-13 02:24:09 +03:00
commit 46337bdeec
149 changed files with 15503 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 22.09.2015 22:34:25
newmtl RedCube
Ns 9.999999
Ni 1.500000
d 1.000000
Tr 0.000000
Tf 1.000000 1.000000 1.000000
illum 2
Ka 1.000000 0.000000 0.000000
Kd 1.000000 0.000000 0.000000
Ks 0.000000 0.000000 0.000000
Ke 0.000000 0.000000 0.000000
newmtl BlueCube
Ns 9.999999
Ni 1.500000
d 1.000000
Tr 0.000000
Tf 1.000000 1.000000 1.000000
illum 2
Ka 0.047059 0.000000 1.000000
Kd 0.047059 0.000000 1.000000
Ks 0.000000 0.000000 0.000000
Ke 0.000000 0.000000 0.000000
+105
View File
@@ -0,0 +1,105 @@
# 3dA Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 22.09.2015 22:34:25
mtllib Boxes.mtl
#
# object RedBox
#
v -0.500000 0.000000 0.500000
v -0.500000 0.000000 -0.500000
v 0.500000 0.000000 -0.500000
v 0.500000 0.000000 0.500000
v -0.500000 1.000000 0.500000
v 0.500000 1.000000 0.500000
v 0.500000 1.000000 -0.500000
v -0.500000 1.000000 -0.500000
# 8 vertices
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 0.000000 1.000000
vn 1.000000 0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 -0.000000
# 6 vertex normals
vt 1.000000 0.000000 0.000000
vt 1.000000 1.000000 0.000000
vt 0.000000 1.000000 0.000000
vt 0.000000 0.000000 0.000000
# 4 texture coords
g RedBox
usemtl RedCube
s 2
f 1/1/1 2/2/1 3/3/1
f 3/3/1 4/4/1 1/1/1
s 4
f 5/4/2 6/1/2 7/2/2
f 7/2/2 8/3/2 5/4/2
s 8
f 1/4/3 4/1/3 6/2/3
f 6/2/3 5/3/3 1/4/3
s 16
f 4/4/4 3/1/4 7/2/4
f 7/2/4 6/3/4 4/4/4
s 32
f 3/4/5 2/1/5 8/2/5
f 8/2/5 7/3/5 3/4/5
s 64
f 2/4/6 1/1/6 5/2/6
f 5/2/6 8/3/6 2/4/6
# 12 faces
#
# object BlueBox
#
v -0.500000 0.000000 1.978305
v -0.500000 0.000000 0.978305
v 0.500000 0.000000 0.978305
v 0.500000 0.000000 1.978305
v -0.500000 1.000000 1.978305
v 0.500000 1.000000 1.978305
v 0.500000 1.000000 0.978305
v -0.500000 1.000000 0.978305
# 8 vertices
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 -0.000000
vn 0.000000 0.000000 1.000000
vn 1.000000 0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 -0.000000
# 6 vertex normals
vt 1.000000 0.000000 0.000000
vt 1.000000 1.000000 0.000000
vt 0.000000 1.000000 0.000000
vt 0.000000 0.000000 0.000000
# 4 texture coords
g BlueBox
usemtl BlueCube
s 2
f 9/5/7 10/6/7 11/7/7
f 11/7/7 12/8/7 9/5/7
s 4
f 13/8/8 14/5/8 15/6/8
f 15/6/8 16/7/8 13/8/8
s 8
f 9/8/9 12/5/9 14/6/9
f 14/6/9 13/7/9 9/8/9
s 16
f 12/8/10 11/5/10 15/6/10
f 15/6/10 14/7/10 12/8/10
s 32
f 11/8/11 10/5/11 16/6/11
f 16/6/11 15/7/11 11/8/11
s 64
f 10/8/12 9/5/12 13/6/12
f 13/6/12 16/7/12 10/8/12
# 12 faces
+3
View File
@@ -0,0 +1,3 @@
1.0
{6799A53E-CBB1-451A-82C7-E5F10C33EBCA}
14435573237290376
+57
View File
@@ -0,0 +1,57 @@
struct VS_INPUT {
float4 vPosition : POSITION;
float3 normal : NORMAL;
float2 uv0 : UV0;
float2 uv1 : UV1;
};
struct VS_OUTPUT {
float4 vPosition : SV_POSITION;
float3 normal : TEXCOORD0;
float2 uv0 : TEXCOORD1;
float2 uv1 : TEXCOORD2;
float3 worldPos : TEXCOORD3;
};
cbuffer TestBuffer : register(b3) {
float4x4 mWorld;
float4x4 mView;
float4x4 mProjection;
float4 cameraWorldPos;
}
Texture2D diffuse : register(t0);
Texture2D tex2 : register(t1);
SamplerState MeshTextureSampler;
VS_OUTPUT main_vs(VS_INPUT v) {
VS_OUTPUT o;
float4x4 wvp = mul(mul(mProjection, mView), mWorld);
o.vPosition = mul(wvp, float4(v.vPosition.xyz, 1));
o.normal = mul((float3x3)mWorld, v.normal);
o.uv0 = v.uv0;
o.uv1 = v.uv1;
o.worldPos = mul((float3x3)mWorld, v.vPosition.xyz);
return o;
}
#include "lighting/cook_torrance_term.inc"
float4 main_ps(VS_OUTPUT input) : SV_Target
{
float3 ambient = float3(0.3f, 0.3f, 0.4f);
float4 diffuseColor = 1.0f;// diffuse.Sample(MeshTextureSampler, input.uv0);
float3 worldPos = input.worldPos;
float3 camPos = cameraWorldPos.xyz;
float3 viewDir = normalize(camPos - worldPos);
float3 sun = normalize(float3(-1, 1, -1));
float3 surfaceColor = cook_torrance(normalize(input.normal), viewDir, sun, 0.1f, 1.0f, float3(1,1,1), diffuseColor.rgb);
return float4(surfaceColor + ambient * diffuseColor, 1);
}
+64
View File
@@ -0,0 +1,64 @@
struct VS_INPUT
{
float4 vPosition : POSITION;
float3 normal : NORMAL;
float2 uv0 : UV0;
float2 uv1 : UV1;
};
struct VS_OUTPUT {
float4 vPosition : SV_POSITION;
float3 normal : TEXCOORD0;
float2 uv0 : TEXCOORD1;
float2 uv1 : TEXCOORD2;
float3 worldPos : TEXCOORD3;
float3 viewPos : TEXCOORD4;
};
cbuffer TestBuffer : register(b3) {
float4x4 mWorld;
float4x4 mView;
float4x4 mProjection;
float4 cameraWorldPos;
float4 _DiffuseColor;
}
Texture2D diffuse : register(t0);
Texture2D tex2 : register(t1);
SamplerState MeshTextureSampler;
VS_OUTPUT main_vs(VS_INPUT v){
VS_OUTPUT o;
float4x4 wv = mul(mView, mWorld);
float4x4 wvp = mul(mul(mProjection, mView), mWorld);
o.vPosition = mul(wvp, float4(v.vPosition.xyz,1));
o.normal = mul((float3x3)mWorld, v.normal);
o.uv0 = v.uv0;
o.uv1 = v.uv1;
o.worldPos = mul((float3x3)mWorld, v.vPosition.xyz);
o.viewPos = mul(wv, float4(v.vPosition.xyz, 1));
return o;
}
#include "lighting/cook_torrance_term.inc"
float4 main_ps(VS_OUTPUT input) : SV_Target
{
float3 ambient = float3(0.3f, 0.3f, 0.4f);
float4 diffuseColor = _DiffuseColor * diffuse.Sample(MeshTextureSampler, input.uv0);
float3 worldPos = input.worldPos;
float3 camPos = cameraWorldPos.xyz;
float3 viewDir = normalize(camPos - worldPos);
float3 sun = normalize(float3(-1, 1, -1));
float3 surfaceColor = cook_torrance(normalize(input.normal), viewDir, sun, 0.7f, 0.1f, diffuseColor.rgb, diffuseColor.rgb);
return float4(surfaceColor + ambient * diffuseColor, 1);
}
+32
View File
@@ -0,0 +1,32 @@
struct VS_INPUT
{
float4 position : POSITION;
float4 color : COLOR;
};
struct VS_OUTPUT {
float4 position : SV_POSITION;
float4 color : TEXCOORD0;
};
cbuffer TestBuffer : register(b3) {
float4x4 mWorld;
float4x4 mView;
float4x4 mProjection;
float alphaMul;
}
VS_OUTPUT main_vs(VS_INPUT v) {
VS_OUTPUT o;
float4x4 wvp = mul(mul(mProjection, mView), mWorld);
o.position = mul(wvp, float4(v.position.xyz, 1));
o.color = v.color;
return o;
}
float4 main_ps(VS_OUTPUT input) : SV_Target{
float4 color = input.color;
color *= alphaMul;
return color;
}
@@ -0,0 +1,70 @@
#ifndef COOK_TORRANCE_TERM
#define COOK_TORRANCE_TERM
float4 cook_torrance(
in float3 normal,
in float3 viewer,
in float3 light, float roughness_value, float ref_at_norm_incidence, float3 cSpecular, float3 cDiffuse)
{
// Compute any aliases and intermediary values
// -------------------------------------------
float3 half_vector = normalize( light + viewer );
float NdotL = saturate( dot( normal, light ) );
float NdotH = max( dot( normal, half_vector ) , 1.0e-7);
float NdotV = saturate( dot( normal, viewer ) );
float VdotH = saturate( dot( viewer, half_vector ) );
float r_sq = roughness_value * roughness_value;
// Evaluate the geometric term
// --------------------------------
float geo_numerator = 2.0f * NdotH;
float geo_denominator = VdotH;
float geo_b = (geo_numerator * NdotV ) / geo_denominator;
float geo_c = (geo_numerator * NdotL ) / geo_denominator;
float geo = min( 1.0f, min( geo_b, geo_c ) );
// Now evaluate the roughness term
// -------------------------------
float roughness;
float roughness_a = 1.0f / ( 4.0f * r_sq * pow( NdotH, 4 ) );
float roughness_b = NdotH * NdotH - 1.0f;
float roughness_c = r_sq * NdotH * NdotH;
roughness = roughness_a * exp( roughness_b / roughness_c );
// Next evaluate the Fresnel value
// -------------------------------
float fresnel = pow( 1.0f - VdotH, 5.0f );
fresnel *= ( 1.0f - ref_at_norm_incidence );
fresnel += ref_at_norm_incidence;
// Put all the terms together to compute
// the specular term in the equation
// -------------------------------------
float3 Rs_numerator = ( fresnel * geo * roughness );
float Rs_denominator = max(1.0e-7, NdotV * NdotL);
float3 Rs = Rs_numerator/ Rs_denominator;
// Put all the parts together to generate
// the final colour
// --------------------------------------
Rs = max(0, Rs);
float3 final = max(0.0f, NdotL) *cDiffuse + (1 * Rs );
// Return the result
// -----------------
return float4( final, 1.0f );
}
#endif
+47
View File
@@ -0,0 +1,47 @@
struct VS_INPUT
{
float4 vPosition : POSITION;
float3 normal : NORMAL;
float2 uv0 : UV0;
float2 uv1 : UV1;
};
struct VS_OUTPUT {
float4 vPosition : SV_POSITION;
float3 normal : TEXCOORD0;
float2 uv0 : TEXCOORD1;
float2 uv1 : TEXCOORD2;
};
cbuffer TestBuffer : register(b3) {
float4x4 mWorld;
float4x4 mView;
float4x4 mProjection;
}
Texture2D tex : register(t0);
Texture2D tex2 : register(t1);
SamplerState MeshTextureSampler;
VS_OUTPUT main_vs(VS_INPUT v) {
VS_OUTPUT o;
float4x4 wvp = mul(mul(mProjection, mView), mWorld);
o.vPosition = mul(wvp, float4(v.vPosition.xyz, 1));
o.normal = mul((float3x3)mWorld, v.normal);
o.uv0 = v.uv0;
o.uv1 = v.uv1;
return o;
}
float4 main_ps(VS_OUTPUT input) : SV_Target
{
float3 sun = normalize(float3(-1,1,-1));
float lit = dot(sun, input.normal);
float3 diffuse = float3(1, 0, 0);
return float4(diffuse * lit, 1);
}
+63
View File
@@ -0,0 +1,63 @@
struct VS_INPUT
{
float4 vPosition : POSITION;
float3 normal : NORMAL;
float2 uv0 : UV0;
float2 uv1 : UV1;
};
struct VS_OUTPUT {
float4 vPosition : SV_POSITION;
float3 normal : TEXCOORD0;
float2 uv0 : TEXCOORD1;
float2 uv1 : TEXCOORD2;
float3 worldPos : TEXCOORD3;
float3 viewPos : TEXCOORD4;
};
cbuffer TestBuffer : register(b3) {
float4x4 mWorld;
float4x4 mView;
float4x4 mProjection;
float4 cameraWorldPos;
}
Texture2D diffuse : register(t0);
SamplerState MeshTextureSampler : register(s0);
VS_OUTPUT main_vs(VS_INPUT v){
VS_OUTPUT o;
float4x4 wv = mul(mView, mWorld);
float4x4 wvp = mul(mul(mProjection, mView), mWorld);
o.vPosition = mul(wvp, float4(v.vPosition.xyz,1));
o.normal = mul((float3x3)mWorld, v.normal);
o.uv0 = v.uv0;
o.uv1 = v.uv1;
o.worldPos = mul((float3x3)mWorld, v.vPosition.xyz);
o.viewPos = mul(wv, float4(v.vPosition.xyz, 1));
return o;
}
#include "lighting/cook_torrance_term.inc"
float4 main_ps(VS_OUTPUT input) : SV_Target
{
float3 ambient = float3(0.3f, 0.3f, 0.4f);
float4 diffuseColor = diffuse.Sample(MeshTextureSampler, input.uv0);
return diffuseColor;
float3 worldPos = input.worldPos;
float3 camPos = cameraWorldPos.xyz;
float3 viewDir = normalize(camPos - worldPos);
float3 sun = normalize(float3(-1, 1, -1));
float3 surfaceColor = cook_torrance(normalize(input.normal), viewDir, sun, 0.7f, 0.1f, diffuseColor.rgb, diffuseColor.rgb);
return float4(surfaceColor + ambient * diffuseColor, 1);
}
+10
View File
@@ -0,0 +1,10 @@
#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) in vec3 fragColor;
layout(location = 0) out vec4 outColor;
void main() {
outColor = vec4(fragColor, 1.0);
}
+18
View File
@@ -0,0 +1,18 @@
#version 450
#extension GL_ARB_separate_shader_objects : enable
layout(binding = 0) uniform UniformBufferObject {
mat4 model;
mat4 view;
mat4 proj;
} ubo;
layout(location = 0) in vec3 inPosition;
layout(location = 2) in vec3 inColor;
layout(location = 0) out vec3 fragColor;
void main() {
gl_Position = ubo.proj * ubo.view * ubo.model * vec4(inPosition.xyz, 1.0);
fragColor = vec3(inColor.xyz);
}
Binary file not shown.