Skip to content

Commit 484fa0b

Browse files
committed
Working terrain colloring based on hardness and type.. However, types and hardness is yet to be implemented
1 parent 472d624 commit 484fa0b

17 files changed

Lines changed: 57 additions & 44 deletions

Blobtory/Scripts/Main.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from panda3d.core import loadPrcFile, loadPrcFileData
2-
from direct.showbase.ShowBase import ShowBase, PTAFloat, AmbientLight
2+
from direct.showbase.ShowBase import ShowBase, PTAFloat, AmbientLight, DirectionalLight
33

44
from Blobtory.Scripts.Pipeline.WindowCreator import WindowCreator
55

@@ -25,13 +25,23 @@ def __init__(self):
2525
self.accept("a", self.planetGen.RegenPlanet)
2626

2727
alight = AmbientLight('alight')
28-
alight.setColor((0.5, 0.5, 0.5, 1))
28+
alight.setColor((0.1, 0.1, 0.1, 1))
2929
alnp = self.render.attachNewNode(alight)
3030
self.render.setLight(alnp)
3131

32+
dlight = DirectionalLight('my dlight')
33+
dlnp = self.render.attachNewNode(dlight)
34+
self.render.setLight(dlnp)
35+
36+
dlight = DirectionalLight('my dlight')
37+
dlight.setColor((0.05, 0.05, 0.05, 1))
38+
dlnp = self.render.attachNewNode(dlight)
39+
dlnp.setHpr(0, 180, 0)
40+
self.render.setLight(dlnp)
41+
3242

3343
loadPrcFileData('', 'framebuffer-multisample 1')
34-
loadPrcFileData('', 'multisamples 1')
44+
loadPrcFileData('', 'multisamples 0')
3545
loadPrcFileData('', 'sync-video false')
3646
loadPrcFile("config/Config.prc")
3747
blobtoryBase = Main()

Blobtory/Scripts/Pipeline/WindowCreator.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from direct.filter.CommonFilters import CommonFilters
22
from direct.showbase.ShowBase import ShowBase, DirectionalLight, AntialiasAttrib
3+
from direct.task import Task
34
from panda3d.core import WindowProperties
45
from Blobtory.Scripts.Pipeline.BaseData import ShowBaseData
56
from multipledispatch import dispatch
@@ -79,19 +80,7 @@ def UpdateWindow(self, isFullscreen: bool, enableRP: bool):
7980
filters = CommonFilters(self.base.win, self.base.cam)
8081
# filters.setHighDynamicRange()
8182
# filters.setBloom()
82-
83-
dlight = DirectionalLight('my dlight')
84-
# dlight.setColor((0.8, 0.5, 0.5, 1))
85-
dlnp = self.base.render.attachNewNode(dlight)
86-
self.base.render.setLight(dlnp)
87-
88-
dlight = DirectionalLight('my dlight')
89-
dlight.setColor((0.05, 0.05, 0.05, 1))
90-
dlnp = self.base.render.attachNewNode(dlight)
91-
dlnp.setHpr(0, 180, 0)
92-
self.base.render.setLight(dlnp)
93-
94-
#filters.setAmbientOcclusion()
83+
# filters.setAmbientOcclusion()
9584
# filters.setVolumetricLighting(dlnp)
9685
self.base.render.setAntialias(AntialiasAttrib.MAuto)
9786
self.base.setBackgroundColor(0, 0.01, 0.1)

Blobtory/Scripts/planet_former/MarchingCubes.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import math
22

33
from panda3d.core import Texture, Shader, NodePath, LVecBase3i, ShaderAttrib, GeomEnums, GeomNode, \
4-
GeomVertexFormat, GeomVertexData, GeomTriangles, Geom, OmniBoundingVolume, Material, LColor
4+
GeomVertexFormat, GeomVertexData, GeomTriangles, Geom, OmniBoundingVolume, Material, LColor, SamplerState, \
5+
TextureStage
56

67
from assets.shaders.compute.includes import MarchTable
78
from Blobtory.Scripts.planet_former.CubeFormer import CubeFormer
@@ -131,8 +132,18 @@ def GenerateMesh(self):
131132

132133
myMaterial = Material()
133134
myMaterial.setShininess(0.8) # Make this material shiny
134-
myMaterial.setDiffuse(LColor(0.95, 0.24, 0.06, 1)*0.1)
135+
myMaterial.setDiffuse(LColor(0.99, 0.16, 0.06, 1)*0.1)
135136
myMaterial.setSpecular((1.1, 1.1, 1.1, 1))
136-
myMaterial.setAmbient((0.04, 0.01, 0.006, 1)) # Make this material blue
137137
self.geomPath.setMaterial(myMaterial)
138138

139+
myDiffTex = self.winCreator.base.loader.loadTexture(
140+
"assets/textures/ramps/rampTerrainDiffuse.png",
141+
"assets/textures/ramps/rampTerrainSpecular.png")
142+
#myDiffTex.setMagfilter(SamplerState.FT_linear)
143+
#myDiffTex.setMinfilter(SamplerState.FT_linear)
144+
145+
stageDiff = TextureStage("Diffuse")
146+
stageDiff.setSort(1)
147+
self.geomPath.setTexture(stageDiff, myDiffTex)
148+
149+

assets/shaders/compute/alphaNoiseSphere.glsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ uniform float radius;
88
uniform float offset;
99
uniform vec3 midPoint;
1010
uniform vec4 mouseTime;
11-
const int craterCount = 20;
11+
const int craterCount = 0;
1212

1313
layout(rgba32f, binding = 0) uniform image3D vertexBufferWAlpha;
1414

@@ -45,7 +45,7 @@ void main() {
4545

4646
// point.w = (snoise(polarCoord.yz/(mouseX*10))*radius - r);
4747

48-
float noiseOuter = 1-abs(fractalNoise(normalize(movedPoint)*1)+1)*mouseTime.w*50;
48+
float noiseOuter = 1-abs(fractalNoise(normalize(movedPoint)*1)+1)*mouseTime.w*90;
4949
float planetRadius = radius+noiseOuter;
5050
point.w = smoothstep(0, 1, (planetRadius - lengthFromCenter)/10);
5151

assets/shaders/compute/cubemarcher.glsl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,11 @@ void main() {
6868
imageStore(triangleBuffer, triangleIDIndex+2, vertexID);
6969
vec3 v2 = imageLoad(vertexBufferEdge, vertexID.xyz).xyz;
7070

71-
vec3 normal = cross(v2-v0, v1-v0);
71+
vec3 normal = normalize(cross(v2-v0, v1-v0));
7272
//vec3 normal = normalize(v2+v0+v1);
73-
imageStore(normalBuffer, int(triangleIDIndex/3), vec4(normal, wComb));
73+
int type = int(distance(vec3(512), v1)/60);
74+
if(type > 6) if(dot(normalize(vec3(512)-v1), normal)<0.5) type = 5;
75+
imageStore(normalBuffer, int(triangleIDIndex/3), vec4(normal, type));
7476

7577
i+=3;
7678
} while (triangleEdgeIndex != -1);

assets/shaders/planets/planet.frag

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ in vec3 vertexNormal;
1010
in vec3 primNormal;
1111
in float num;
1212

13+
in vec3 diffuseColor;
14+
in float specStrength;
15+
1316
in vec3 cam_pos;
1417
in vec3 cam_dir;
1518

@@ -26,11 +29,12 @@ float remap(float iMin, float iMax, float oMin, float oMax, float v) {
2629
}
2730

2831
void main() {
29-
int mode = 1;
30-
//vec3 viewDir = normalize(viewspacePos.xyz-cam_pos);
3132
vec3 illumLightSum = vec3(0);
3233
vec3 normal = normalize(primNormal);
3334

35+
//diffuseColor = p3d_Material.diffuse.xyz;
36+
//specStrength = p3d_Material.specular.x;
37+
3438
for (int i = 0; i < p3d_LightSource.length; i++) {
3539
vec3 lightDir = p3d_LightSource[i].position.xyz;
3640
if (p3d_LightSource[i].position.w != 0) lightDir -= viewspacePos;
@@ -49,26 +53,14 @@ void main() {
4953
vec3 halfDir = normalize(lightDir + viewDir);
5054
float specAngle = max(dot(halfDir, normal), 0.0);
5155
specular = pow(specAngle, p3d_Material.shininess);
52-
53-
// this is phong (for comparison)
54-
if (mode == 2) {
55-
vec3 reflectDir = reflect(-lightDir, normal);
56-
specAngle = max(dot(reflectDir, viewDir), 0.0);
57-
// note that the exponent is different here
58-
specular = pow(specAngle, p3d_Material.shininess/4.0);
59-
}
6056
}
61-
vec3 illumDiffuse = (p3d_Material.diffuse.xyz) * lambertian * p3d_LightSource[i].color.xyz * 1 / distance;
62-
vec3 illumSpecular = p3d_Material.diffuse.xyz*p3d_Material.specular * specular * p3d_LightSource[i].color.xyz * 1 / distance;
57+
vec3 illumDiffuse = diffuseColor * lambertian * p3d_LightSource[i].color.xyz * 1 / distance;
58+
vec3 illumSpecular = diffuseColor * specStrength * specular * p3d_LightSource[i].color.xyz * 1 / distance;
6359

6460
illumLightSum += illumDiffuse+illumSpecular;
6561
}
6662

67-
//vec3 reflectDir = reflect(-lightDir, normalize(primNormal));
68-
//float spec = pow(max(dot(viewDir, reflectDir), 0.0), 64);
69-
//vec3 specular = specularStrength * spec * specColor;
70-
71-
vec3 colorGammaCorrected = pow(p3d_LightModel.ambient.xyz*p3d_Material.ambient.xyz+illumLightSum, vec3(0.49504950495));
63+
vec3 colorGammaCorrected = pow(p3d_LightModel.ambient.xyz*diffuseColor+illumLightSum, vec3(0.49504950495));
7264
// use the gamma corrected color in the fragment0
7365
outputColor = vec4(colorGammaCorrected, 1.0);
7466
}

assets/shaders/planets/planet.vert

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ uniform mat4 p3d_ModelMatrix;
77
uniform mat4 p3d_ModelViewMatrix;
88
uniform mat3 p3d_NormalMatrix;
99

10+
uniform sampler2D p3d_Texture0;
11+
uniform sampler2D p3d_Texture1;
12+
1013
layout(rgba32f) uniform readonly image3D vertexBufferEdge;
1114
layout(rgba32i) uniform readonly iimageBuffer triangleBuffer;
1215
layout(rgba32f) uniform readonly imageBuffer normalBuffer;
@@ -22,6 +25,9 @@ out float num;
2225
out vec4 fragPos;
2326
out vec3 viewspacePos;
2427

28+
out vec3 diffuseColor;
29+
out float specStrength;
30+
2531
out vec3 cam_pos;
2632
out vec3 cam_dir;
2733

@@ -43,6 +49,11 @@ void main() {
4349
texcoord = p3d_MultiTexCoord0;
4450
num = primNormalWVal.w;
4551

52+
vec4 getColor = texelFetch(p3d_Texture0, ivec2(8-num, 8-num), 0);
53+
diffuseColor = getColor.xyz;
54+
diffuseColor = diffuseColor*diffuseColor;
55+
specStrength = getColor.w;
56+
4657
cam_pos = p3d_ViewMatrixInverse[3].xyz;
4758
cam_dir = -p3d_ViewMatrixInverse[2].xyz;
4859
}

assets/shaders/utils/p3d_light_sources.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ uniform struct p3d_LightSourceParameters {
2525

2626
// Transforms view-space coordinates to shadow map coordinates
2727
mat4 shadowViewMatrix;
28-
} p3d_LightSource[8];
28+
} p3d_LightSource[4];
2929

3030
// The sum of all active ambient light colors.
3131
uniform struct {
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)