add ImViewzmo, add floating window for QWER(select, translate, rotate, scale) , and add new debug button to floating (Experimental)
This commit is contained in:
@ -12,9 +12,8 @@ uniform mat4 u_Projection;
|
||||
uniform vec3 u_CameraPosition;
|
||||
|
||||
out CameraData{
|
||||
mat4 View;
|
||||
mat4 Projection;
|
||||
vec3 CameraPosition;
|
||||
mat4 ViewProjection;
|
||||
vec3 Position;
|
||||
}CameraOutput;
|
||||
|
||||
out vec3 v_NearPoint;
|
||||
@ -31,9 +30,8 @@ void main() {
|
||||
v_NearPoint = unprojectPoint(a_Position.x, a_Position.y, 0.0);
|
||||
v_FarPoint = unprojectPoint(a_Position.x, a_Position.y, 1.0);
|
||||
|
||||
CameraOutput.View = u_View;
|
||||
CameraOutput.Projection = u_Projection;
|
||||
CameraOutput.CameraPosition = u_CameraPosition;
|
||||
CameraOutput.ViewProjection = u_Projection * u_View;
|
||||
CameraOutput.Position = u_CameraPosition;
|
||||
|
||||
gl_Position = vec4(a_Position, 1.0);
|
||||
}
|
||||
@ -47,22 +45,21 @@ in vec3 v_NearPoint;
|
||||
in vec3 v_FarPoint;
|
||||
|
||||
in CameraData{
|
||||
mat4 View;
|
||||
mat4 Projection;
|
||||
vec3 CameraPosition;
|
||||
mat4 ViewProjection;
|
||||
vec3 Position;
|
||||
}CameraInput;
|
||||
|
||||
// Grid plane: 0 = XZ (Y up), 1 = XY (Z forward), 2 = YZ (X right)
|
||||
uniform int u_GridPlane = 0;
|
||||
uniform float u_GridScale = 1.0;
|
||||
uniform vec4 u_GridColorThin = vec4(0.5, 0.5, 0.5, 0.4);
|
||||
uniform vec4 u_GridColorThick = vec4(0.5, 0.5, 0.5, 0.6);
|
||||
uniform vec4 u_AxisColorX = vec4(0.9, 0.2, 0.2, 1.0);
|
||||
uniform vec4 u_AxisColorZ = vec4(0.2, 0.2, 0.9, 1.0);
|
||||
uniform float u_FadeDistance = 500.0;
|
||||
uniform int u_GridPlane;
|
||||
uniform float u_GridScale;
|
||||
uniform vec4 u_GridColorThin;
|
||||
uniform vec4 u_GridColorThick;
|
||||
uniform vec4 u_AxisColorX;
|
||||
uniform vec4 u_AxisColorZ;
|
||||
uniform float u_FadeDistance;
|
||||
|
||||
float computeDepth(vec3 pos) {
|
||||
vec4 clipSpacePos = CameraInput.Projection * CameraInput.View * vec4(pos, 1.0);
|
||||
vec4 clipSpacePos = CameraInput.ViewProjection * vec4(pos, 1.0);
|
||||
return clipSpacePos.z / clipSpacePos.w;
|
||||
}
|
||||
|
||||
@ -155,11 +152,11 @@ void main() {
|
||||
// === Fading ===
|
||||
|
||||
// Radial fade
|
||||
float dist = length(fragPos3D - CameraInput.CameraPosition);
|
||||
float dist = length(fragPos3D - CameraInput.Position);
|
||||
float radialFade = 1.0 - smoothstep(u_FadeDistance * 0.3, u_FadeDistance, dist);
|
||||
|
||||
// Normal fade (view angle)
|
||||
vec3 viewDir = normalize(fragPos3D - CameraInput.CameraPosition);
|
||||
vec3 viewDir = normalize(fragPos3D - CameraInput.Position);
|
||||
float viewAngle = getViewAngleComponent(viewDir);
|
||||
float normalFade = smoothstep(0.0, 0.15, viewAngle);
|
||||
|
||||
@ -179,7 +176,8 @@ void main() {
|
||||
|
||||
// LOD blend
|
||||
vec2 deriv1 = fwidth(gridCoord1);
|
||||
float lodFactor = smoothstep(0.3, 0.6, max(deriv1.x, deriv1.y));
|
||||
float lodFactor = smoothstep(20.0, 200.0, dist);
|
||||
// float lodFactor = smoothstep(0.2, 0.5, max(deriv1.x, deriv1.y));
|
||||
|
||||
// Combine grids
|
||||
float gridIntensity = mix(max(grid1, grid10 * 0.7), grid10, lodFactor);
|
||||
|
||||
Reference in New Issue
Block a user